class ServletContextLogHandler extends Handler {

  private final ServletContext context;

  ServletContextLogHandler(ServletContext context) {
    this.context = context;
  }

  @Override
  public void publish(LogRecord record) {<FILL_FUNCTION_BODY>}

  @Override
  public void flush() {
    // do nothing
  }

  @Override
  public void close() {
    // do nothing
  }

}

    Formatter formatter = getFormatter();
    String message;
    if (formatter == null) {
      message = record.getMessage();
    } else {
      message = formatter.format(record);
    }
    Throwable throwable = record.getThrown();
    if (throwable == null) {
      context.log(message);
    } else {
      context.log(message, throwable);
    }
  
<methods>public abstract void close() throws java.lang.SecurityException,public abstract void flush() ,public java.lang.String getEncoding() ,public java.util.logging.ErrorManager getErrorManager() ,public java.util.logging.Filter getFilter() ,public java.util.logging.Formatter getFormatter() ,public java.util.logging.Level getLevel() ,public boolean isLoggable(java.util.logging.LogRecord) ,public abstract void publish(java.util.logging.LogRecord) ,public synchronized void setEncoding(java.lang.String) throws java.lang.SecurityException, java.io.UnsupportedEncodingException,public synchronized void setErrorManager(java.util.logging.ErrorManager) ,public synchronized void setFilter(java.util.logging.Filter) throws java.lang.SecurityException,public synchronized void setFormatter(java.util.logging.Formatter) throws java.lang.SecurityException,public synchronized void setLevel(java.util.logging.Level) throws java.lang.SecurityException<variables>private volatile java.lang.String encoding,private volatile java.util.logging.ErrorManager errorManager,private volatile java.util.logging.Filter filter,private volatile java.util.logging.Formatter formatter,private volatile java.util.logging.Level logLevel,private final java.util.logging.LogManager manager,private static final int offValue