public RootLoggerConfig build() { return new RootLoggerConfig(this); } }
public String buildLogPattern(RootLoggerConfig config) { return LOG_FORMAT .replace(PROCESS_NAME_PLACEHOLDER, config.getProcessId().getKey()) .replace(THREAD_ID_PLACEHOLDER, config.getThreadIdFieldPattern()) .replace(LOGGER_NAME_PLACEHOLDER, loggerNamePattern); }
/** * Setup one or more specified loggers to be non additive and to print to System.out which will be caught by the Main * Process and written to sonar.log. */ private void configureDirectToConsoleLoggers(LoggerContext context, String... loggerNames) { RootLoggerConfig config = newRootLoggerConfigBuilder() .setProcessId(ProcessId.APP) .setThreadIdFieldPattern("") .build(); String logPattern = helper.buildLogPattern(config); ConsoleAppender<ILoggingEvent> consoleAppender = helper.newConsoleAppender(context, "CONSOLE", logPattern); for (String loggerName : loggerNames) { Logger consoleLogger = context.getLogger(loggerName); consoleLogger.setAdditive(false); consoleLogger.addAppender(consoleAppender); } }
private String writeFileAppender(RootLoggerConfig config, File logDir, String logPattern) { String appenderName = "file_" + config.getProcessId().getLogFilenamePrefix(); RollingPolicy rollingPolicy = createRollingPolicy(logDir, config.getProcessId().getLogFilenamePrefix()); Appender appender = new Appender(appenderName, rollingPolicy, logPattern); appender.writeAppenderProperties(); return appender.getAppenderRef(); }
@Test public void buildLogPattern_does_not_put_threadIdFieldPattern_from_RootLoggerConfig_is_null() { String pattern = underTest.buildLogPattern( newRootLoggerConfigBuilder() .setProcessId(ProcessId.COMPUTE_ENGINE) .build()); assertThat(pattern).isEqualTo("%d{yyyy.MM.dd HH:mm:ss} %-5level ce[][%logger{20}] %msg%n"); }
public FileAppender<ILoggingEvent> newFileAppender(LoggerContext ctx, Props props, RootLoggerConfig config, String logPattern) { RollingPolicy rollingPolicy = createRollingPolicy(ctx, props, config.getProcessId().getLogFilenamePrefix()); FileAppender<ILoggingEvent> fileAppender = rollingPolicy.createAppender("file_" + config.getProcessId().getLogFilenamePrefix()); fileAppender.setContext(ctx); PatternLayoutEncoder fileEncoder = new PatternLayoutEncoder(); fileEncoder.setContext(ctx); fileEncoder.setPattern(logPattern); fileEncoder.start(); fileAppender.setEncoder(fileEncoder); fileAppender.start(); return fileAppender; }
private void configureRootLogger(Props props) { RootLoggerConfig config = newRootLoggerConfigBuilder() .setProcessId(processId) .setThreadIdFieldPattern(threadIdFieldPattern) .build(); String logPattern = helper.buildLogPattern(config); helper.configureGlobalFileLog(props, config, logPattern); helper.configureForSubprocessGobbler(props, logPattern); }
@Test public void buildLogPattern_puts_process_key_as_process_id() { String pattern = underTest.buildLogPattern(newRootLoggerConfigBuilder() .setProcessId(ProcessId.ELASTICSEARCH) .build()); assertThat(pattern).isEqualTo("%d{yyyy.MM.dd HH:mm:ss} %-5level es[][%logger{20}] %msg%n"); }
@Test public void buildLogPattern_puts_process_key_as_process_id() { String pattern = underTest.buildLogPattern(newRootLoggerConfigBuilder() .setProcessId(ProcessId.ELASTICSEARCH) .build()); assertThat(pattern).isEqualTo("%d{yyyy.MM.dd HH:mm:ss} %-5level es[][%logger{1.}] %msg%n"); }
@Test public void buildLogPattern_does_not_put_threadIdFieldPattern_from_RootLoggerConfig_is_null() { String pattern = underTest.buildLogPattern( newRootLoggerConfigBuilder() .setProcessId(ProcessId.COMPUTE_ENGINE) .build()); assertThat(pattern).isEqualTo("%d{yyyy.MM.dd HH:mm:ss} %-5level ce[][%logger{1.}] %msg%n"); }
@Test public void buildLogPattern_does_not_put_threadIdFieldPattern_from_RootLoggerConfig_is_empty() { String pattern = underTest.buildLogPattern( newRootLoggerConfigBuilder() .setProcessId(ProcessId.WEB_SERVER) .setThreadIdFieldPattern("") .build()); assertThat(pattern).isEqualTo("%d{yyyy.MM.dd HH:mm:ss} %-5level web[][%logger{1.}] %msg%n"); }
@Test public void buildLogPattern_does_not_put_threadIdFieldPattern_from_RootLoggerConfig_is_empty() { String pattern = underTest.buildLogPattern( newRootLoggerConfigBuilder() .setProcessId(ProcessId.WEB_SERVER) .setThreadIdFieldPattern("") .build()); assertThat(pattern).isEqualTo("%d{yyyy.MM.dd HH:mm:ss} %-5level web[][%logger{20}] %msg%n"); }
@Test public void buildLogPattern_puts_threadIdFieldPattern_from_RootLoggerConfig_non_null() { String threadIdFieldPattern = RandomStringUtils.randomAlphabetic(5); String pattern = underTest.buildLogPattern( newRootLoggerConfigBuilder() .setProcessId(ProcessId.APP) .setThreadIdFieldPattern(threadIdFieldPattern) .build()); assertThat(pattern).isEqualTo("%d{yyyy.MM.dd HH:mm:ss} %-5level app[" + threadIdFieldPattern + "][%logger{1.}] %msg%n"); }
@Test public void buildLogPattern_puts_threadIdFieldPattern_from_RootLoggerConfig_non_null() { String threadIdFieldPattern = RandomStringUtils.randomAlphabetic(5); String pattern = underTest.buildLogPattern( newRootLoggerConfigBuilder() .setProcessId(ProcessId.APP) .setThreadIdFieldPattern(threadIdFieldPattern) .build()); assertThat(pattern).isEqualTo("%d{yyyy.MM.dd HH:mm:ss} %-5level app[" + threadIdFieldPattern + "][%logger{20}] %msg%n"); }
public Properties createProperties(Props props, File logDir) { Log4JPropertiesBuilder log4JPropertiesBuilder = new Log4JPropertiesBuilder(props); RootLoggerConfig config = newRootLoggerConfigBuilder().setProcessId(ProcessId.ELASTICSEARCH).build(); String logPattern = log4JPropertiesBuilder.buildLogPattern(config); log4JPropertiesBuilder.internalLogLevel(Level.ERROR); log4JPropertiesBuilder.configureGlobalFileLog(config, logDir, logPattern); log4JPropertiesBuilder.apply( LogLevelConfig.newBuilder(log4JPropertiesBuilder.getRootLoggerName()) .rootLevelFor(ProcessId.ELASTICSEARCH) .build()); return log4JPropertiesBuilder.get(); }
/** * Setup one or more specified loggers to be non additive and to print to System.out which will be caught by the Main * Process and written to sonar.log. */ private void configureDirectToConsoleLoggers(LoggerContext context, String... loggerNames) { RootLoggerConfig config = newRootLoggerConfigBuilder() .setProcessId(ProcessId.APP) .setThreadIdFieldPattern("") .build(); String logPattern = helper.buildLogPattern(config); ConsoleAppender<ILoggingEvent> consoleAppender = helper.newConsoleAppender(context, "CONSOLE", logPattern); for (String loggerName : loggerNames) { Logger consoleLogger = context.getLogger(loggerName); consoleLogger.setAdditive(false); consoleLogger.addAppender(consoleAppender); } }
private void configureRootLogger(Props props) { RootLoggerConfig config = newRootLoggerConfigBuilder() .setProcessId(processId) .setThreadIdFieldPattern(threadIdFieldPattern) .build(); String logPattern = helper.buildLogPattern(config); helper.configureGlobalFileLog(props, config, logPattern); helper.configureForSubprocessGobbler(props, logPattern); }
public Properties createProperties(Props props, File logDir) { Log4JPropertiesBuilder log4JPropertiesBuilder = new Log4JPropertiesBuilder(props); RootLoggerConfig config = newRootLoggerConfigBuilder().setProcessId(ProcessId.ELASTICSEARCH).build(); String logPattern = log4JPropertiesBuilder.buildLogPattern(config); log4JPropertiesBuilder.internalLogLevel(Level.ERROR); log4JPropertiesBuilder.configureGlobalFileLog(config, logDir, logPattern); log4JPropertiesBuilder.apply( LogLevelConfig.newBuilder(log4JPropertiesBuilder.getRootLoggerName()) .rootLevelFor(ProcessId.ELASTICSEARCH) .build()); return log4JPropertiesBuilder.get(); }