@Override public void setAdditivity(boolean additivity) { logger.setAdditive(additivity); }
public void logger(String name, Level level, boolean additive, Appender<ILoggingEvent> appender) { Logger logger = this.context.getLogger(name); if (level != null) { logger.setLevel(level); } logger.setAdditive(additive); if (appender != null) { logger.addAppender(appender); } }
/** * Creates a non additive logger dedicated to printing message as is (ie. assuming they are already formatted). * * It creates a dedicated appender to the System.out which applies no formatting the logs it receives. */ private void configureConsole(LoggerContext loggerContext) { ConsoleAppender<ILoggingEvent> consoleAppender = helper.newConsoleAppender(loggerContext, CONSOLE_PLAIN_APPENDER, "%msg%n"); Logger consoleLogger = loggerContext.getLogger(CONSOLE_LOGGER); consoleLogger.setAdditive(false); consoleLogger.addAppender(consoleAppender); }
/** * Configure the logger to which logs from sub processes are written to * (called {@link StreamGobbler#LOGGER_GOBBLER}) by {@link StreamGobbler}, * to be: * <ol> * <li>non additive (ie. these logs will be output by the appender of {@link StreamGobbler#LOGGER_GOBBLER} and only this one)</li> * <li>write logs as is (ie. without any extra formatting)</li> * <li>write exclusively to App's System.out</li> * </ol> */ private void configureGobbler(LoggerContext ctx) { Logger gobblerLogger = ctx.getLogger(LOGGER_GOBBLER); gobblerLogger.setAdditive(false); gobblerLogger.addAppender(helper.newConsoleAppender(ctx, GOBBLER_PLAIN_CONSOLE, "%msg%n")); }
/** * Initializes the logger. This is called when we need to create a new * logger for the given file name. * * @param fileStr * @return a new Logger instance for the given fileStr * @throws IOException */ protected Logger buildLogger(String fileStr) throws IOException { String loggerName = buildLoggerName(); Appender appender = buildAppender(loggerName, fileStr); // Create the logger and add to the map of loggers using our factory Logger logger = loggerContext.getLogger(loggerName); logger.addAppender(appender); logger.setLevel(Level.INFO); logger.setAdditive(false); return logger; }
logger.setAdditive(configuration.isAdditive());
private void initializeLoggerForPluginId(String pluginId) { if (alreadyInitialized(pluginId)) { return; } synchronized (pluginId.intern()) { if (alreadyInitialized(pluginId)) { return; } synchronized (appenderCreationLock) { FileAppender<ILoggingEvent> pluginAppender = getAppender(pluginId); ch.qos.logback.classic.Logger logger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(PLUGIN_LOGGER_PREFIX + "." + pluginId); logger.setAdditive(false); logger.setLevel(systemEnvironment.pluginLoggingLevel(pluginId)); logger.addAppender(pluginAppender); if (systemEnvironment.consoleOutToStdout()) { ConsoleAppender<ILoggingEvent> consoleAppender = new ConsoleAppender<>(); consoleAppender.setEncoder(LogHelper.encoder("%d{ISO8601} %5p [%t] %c{1}:%L [plugin-" + pluginId + "] - %m%n")); logger.setAdditive(false); logger.setLevel(systemEnvironment.pluginLoggingLevel(pluginId)); consoleAppender.start(); logger.addAppender(consoleAppender); } loggingServiceLogger.debug("Plugin with ID: " + pluginId + " will log to: " + pluginAppender.rawFileProperty()); } } }
/** * 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); } }
boolean additive = OptionHelper.toBoolean(additivityStr, true); addInfo("Setting additivity of logger [" + loggerName + "] to " + additive); logger.setAdditive(additive);
@Override public RequestLog build(String name) { final Logger logger = (Logger) LoggerFactory.getLogger("http.request"); logger.setAdditive(false); final LoggerContext context = logger.getLoggerContext(); final LogbackAccessRequestLog requestLog = new LogbackAccessRequestLog(); final LevelFilterFactory<IAccessEvent> levelFilterFactory = new NullLevelFilterFactory<>(); final AsyncAppenderFactory<IAccessEvent> asyncAppenderFactory = new AsyncAccessEventAppenderFactory(); final LayoutFactory<IAccessEvent> layoutFactory = new LogbackAccessRequestLayoutFactory(); for (AppenderFactory<IAccessEvent> output : appenders) { requestLog.addAppender(output.build(context, name, layoutFactory, levelFilterFactory, asyncAppenderFactory)); } return requestLog; } }
@Override public RequestLog build(String name) { final Logger logger = (Logger) LoggerFactory.getLogger("http.request"); logger.setAdditive(false); final LoggerContext context = logger.getLoggerContext(); final LevelFilterFactory<ILoggingEvent> levelFilterFactory = new NullLevelFilterFactory<>(); final AsyncAppenderFactory<ILoggingEvent> asyncAppenderFactory = new AsyncLoggingEventAppenderFactory(); final LayoutFactory<ILoggingEvent> layoutFactory = (c, tz) -> new RequestLogLayout(c); final AppenderAttachableImpl<ILoggingEvent> attachable = new AppenderAttachableImpl<>(); for (AppenderFactory<ILoggingEvent> appender : appenders) { attachable.addAppender(appender.build(context, name, layoutFactory, levelFilterFactory, asyncAppenderFactory)); } return new DropwizardSlf4jRequestLog(attachable, timeZone); } }
/** * Programmatically (i.e. not in XML) create a Logback logger for requests happening on this router. * http://stackoverflow.com/a/17215011/778449 */ private static Logger createLogger(String file) { LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); PatternLayoutEncoder ple = new PatternLayoutEncoder(); ple.setPattern("%d{yyyy-MM-dd'T'HH:mm:ss.SSS} %msg%n"); ple.setContext(lc); ple.start(); FileAppender<ILoggingEvent> fileAppender = new FileAppender<>(); fileAppender.setFile(file); fileAppender.setEncoder(ple); fileAppender.setContext(lc); fileAppender.start(); Logger logger = (Logger) LoggerFactory.getLogger("REQ_LOG"); logger.addAppender(fileAppender); logger.setLevel(Level.INFO); logger.setAdditive(false); return logger; } }
rootLogger.setAdditive(false);
rootLogger.setAdditive(false);
/** * Initializes the logger. This is called when we need to create a new * logger for the given file name. * * @param fileStr * @return a new Logger instance for the given fileStr * @throws IOException */ protected Logger initLogger(String fileStr) throws IOException { String loggerName = "NagiosWriter" + this.hashCode(); final PatternLayoutEncoder encoder = new PatternLayoutEncoder(); encoder.setContext(loggerContext); encoder.setPattern(LOG_PATTERN); encoder.start(); final FileAppender appender = new FileAppender(); appender.setContext(loggerContext); appender.setName(loggerName + "File"); appender.setAppend(true); appender.setBufferSize(new FileSize(LOG_IO_BUFFER_SIZE_BYTES)); appender.setFile(fileStr); appender.setEncoder(encoder); appender.start(); Logger logger = loggerContext.getLogger(loggerName); logger.addAppender(appender); logger.setLevel(Level.INFO); logger.setAdditive(false); return logger; }
addInfo("Setting additivity of logger [" + loggerName + "] to " + additive); logger.setAdditive(additive);
public void logger(String name, Level level, boolean additive, Appender<ILoggingEvent> appender) { Logger logger = this.context.getLogger(name); if (level != null) { logger.setLevel(level); } logger.setAdditive(additive); if (appender != null) { logger.addAppender(appender); } }
private static void setLogLevel(final ConsoleAppender<ILoggingEvent> consoleAppender, final Level level, final String clazz) { final ch.qos.logback.classic.Logger protocolLogger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(clazz); protocolLogger.addAppender(consoleAppender); protocolLogger.setLevel(level); protocolLogger.setAdditive(false); } }
/** * Creates a non additive logger dedicated to printing message as is (ie. assuming they are already formatted). * * It creates a dedicated appender to the System.out which applies no formatting the logs it receives. */ private void configureConsole(LoggerContext loggerContext) { ConsoleAppender<ILoggingEvent> consoleAppender = helper.newConsoleAppender(loggerContext, CONSOLE_PLAIN_APPENDER, "%msg%n"); Logger consoleLogger = loggerContext.getLogger(CONSOLE_LOGGER); consoleLogger.setAdditive(false); consoleLogger.addAppender(consoleAppender); }
@Test public void testAdditive() { listAppender.start(); root.addAppender(listAppender); loggerTest.addAppender(listAppender); loggerTest.setAdditive(false); loggerTest.debug("hello"); // 1 instead of two, since logger is not additive assertEquals(1, listAppender.list.size()); }