/**
  * Build a new appender that will log to the console
  *
  * @param context The logger context (not used by this logger)
  * @param encoder The encoder to use (if that is possible for the specific appender)
  * @return The new console-based log appender
  */
 @Override
 protected Appender<ILoggingEvent> createAppender(
     LoggerContext context, Encoder<ILoggingEvent> encoder) {
   ConsoleAppender<ILoggingEvent> appender = new ConsoleAppender<ILoggingEvent>();
   appender.setEncoder(encoder);
   return appender;
 }
Example #2
0
  protected void buildContext() {
    NotifyingListAppender appender = new NotifyingListAppender();
    appender.setContext(requestLogImpl);
    appender.setName("list");
    appender.start();

    ConsoleAppender<IAccessEvent> console = new ConsoleAppender<IAccessEvent>();
    console.setContext(requestLogImpl);
    console.setName("console");
    PatternLayoutEncoder layout = new PatternLayoutEncoder();
    layout.setContext(requestLogImpl);
    layout.setPattern("%date %server %clientHost");
    console.setEncoder(layout);
    layout.start();
    console.start();

    requestLogImpl.addAppender(appender);
    requestLogImpl.addAppender(console);
  }
Example #3
0
  private static void configureLogging(final Level consoleLevel, final Level fileLevel) {

    final LoggerContext loggerContext = LOG.getLoggerContext();
    loggerContext.reset();

    // set root log to the most permissive filter (affects performance big time (JAVACLI-90))
    final int lowestLogLevel = Math.min(consoleLevel.toInt(), fileLevel.toInt());
    LOG.setLevel(Level.toLevel(lowestLogLevel));

    if (!consoleLevel.equals(Level.OFF)) {
      // create and add console appender
      final PatternLayoutEncoder consoleEncoder = new PatternLayoutEncoder();
      consoleEncoder.setContext(loggerContext);
      consoleEncoder.setPattern(LOG_FORMAT_PATTERN);
      consoleEncoder.start();

      final ConsoleAppender<ILoggingEvent> consoleAppender = new ConsoleAppender<ILoggingEvent>();
      consoleAppender.setContext(loggerContext);
      consoleAppender.setName("STDOUT");
      consoleAppender.setEncoder(consoleEncoder);

      final ThresholdFilter consoleFilter = new ThresholdFilter();
      consoleFilter.setLevel(consoleLevel.levelStr);
      consoleFilter.setName(consoleLevel.levelStr);
      consoleFilter.start();
      consoleAppender.addFilter(consoleFilter);

      consoleAppender.start();
      LOG.addAppender(consoleAppender);
    }

    if (!fileLevel.equals(Level.OFF)) {
      // create file appender only if needed.
      // if done in the xml, it will create an empty file
      final RollingFileAppender<ILoggingEvent> fileAppender =
          new RollingFileAppender<ILoggingEvent>();
      final FixedWindowRollingPolicy sizeBasedRollingPolicy = new FixedWindowRollingPolicy();
      final SizeBasedTriggeringPolicy<Object> sizeBasedTriggeringPolicy =
          new SizeBasedTriggeringPolicy<Object>();

      fileAppender.setContext(loggerContext);
      sizeBasedTriggeringPolicy.setContext(loggerContext);
      sizeBasedRollingPolicy.setContext(loggerContext);
      fileAppender.setRollingPolicy(sizeBasedRollingPolicy);
      sizeBasedRollingPolicy.setParent(fileAppender);
      sizeBasedRollingPolicy.setMinIndex(0);
      sizeBasedRollingPolicy.setMaxIndex(99);

      final Path logFilePath = FileSystems.getDefault().getPath(LOG_DIR, LOG_FILE_NAME);
      fileAppender.setFile(logFilePath.toString());
      sizeBasedRollingPolicy.setFileNamePattern(LOG_DIR + LOG_ARCHIVE_FILE_PATTERN);
      sizeBasedRollingPolicy.start();

      sizeBasedTriggeringPolicy.setMaxFileSize("10MB");
      sizeBasedTriggeringPolicy.start();

      final PatternLayoutEncoder fileEncoder = new PatternLayoutEncoder();
      fileEncoder.setContext(loggerContext);
      fileEncoder.setPattern(LOG_FORMAT_PATTERN);
      fileEncoder.start();

      fileAppender.setTriggeringPolicy((TriggeringPolicy) sizeBasedTriggeringPolicy);
      fileAppender.setRollingPolicy(sizeBasedRollingPolicy);
      fileAppender.setEncoder(fileEncoder);
      fileAppender.setName("LOGFILE");
      sizeBasedRollingPolicy.start();

      final ThresholdFilter fileFilter = new ThresholdFilter();
      fileFilter.setLevel(fileLevel.levelStr);
      fileFilter.setName(fileLevel.levelStr);
      fileFilter.start();
      fileAppender.addFilter(fileFilter);

      LOG.addAppender((Appender) fileAppender);
      fileAppender.start();
    }
  }