private static void enableAsyncAuditLog() { if (!(auditLog instanceof Log4JLogger)) { LOG.warn("Log4j is required to enable async auditlog"); return; } Logger logger = ((Log4JLogger)auditLog).getLogger(); @SuppressWarnings("unchecked") List<Appender> appenders = Collections.list(logger.getAllAppenders()); // failsafe against trying to async it more than once if (!appenders.isEmpty() && !(appenders.get(0) instanceof AsyncAppender)) { AsyncAppender asyncAppender = new AsyncAppender(); // change logger to have an async appender containing all the // previously configured appenders for (Appender appender : appenders) { logger.removeAppender(appender); asyncAppender.addAppender(appender); } logger.addAppender(asyncAppender); } } /**
/** * Make the metrics logger async and add all pre-existing appenders to the * async appender. */ public static void makeMetricsLoggerAsync(Log metricsLog) { if (!(metricsLog instanceof Log4JLogger)) { LOG.warn("Metrics logging will not be async since " + "the logger is not log4j"); return; } org.apache.log4j.Logger logger = ((Log4JLogger) metricsLog).getLogger(); logger.setAdditivity(false); // Don't pollute actual logs with metrics dump @SuppressWarnings("unchecked") List<Appender> appenders = Collections.list(logger.getAllAppenders()); // failsafe against trying to async it more than once if (!appenders.isEmpty() && !(appenders.get(0) instanceof AsyncAppender)) { AsyncAppender asyncAppender = new AsyncAppender(); // change logger to have an async appender containing all the // previously configured appenders for (Appender appender : appenders) { logger.removeAppender(appender); asyncAppender.addAppender(appender); } logger.addAppender(asyncAppender); } } }
private void enableAsyncLogging(Logger logger) { AsyncAppender asyncAppender = new AsyncAppender(); @SuppressWarnings("unchecked") Enumeration<Appender> en = logger.getAllAppenders(); while (en.hasMoreElements()) { Appender appender = en.nextElement(); if (appender instanceof AsyncAppender) { // already async return; } logger.removeAppender(appender); asyncAppender.addAppender(appender); } logger.addAppender(asyncAppender); }
private static void enableAsyncAuditLog() { if (!(auditLog instanceof Log4JLogger)) { LOG.warn("Log4j is required to enable async auditlog"); return; } Logger logger = ((Log4JLogger)auditLog).getLogger(); @SuppressWarnings("unchecked") List<Appender> appenders = Collections.list(logger.getAllAppenders()); // failsafe against trying to async it more than once if (!appenders.isEmpty() && !(appenders.get(0) instanceof AsyncAppender)) { AsyncAppender asyncAppender = new AsyncAppender(); // change logger to have an async appender containing all the // previously configured appenders for (Appender appender : appenders) { logger.removeAppender(appender); asyncAppender.addAppender(appender); } logger.addAppender(asyncAppender); } }
@Override public void activateAsync(List<Object[]> args) { AsyncAppender asyncAppender = new AsyncAppender(); invokeMethod(asyncAppender, args); asyncAppender.setName(productName + "." + logger.getName() + ".AsyncAppender"); Enumeration<Appender> appenders = logger.getAllAppenders(); if (appenders == null) { throw new IllegalStateException("Activate async appender failed, no appender exist."); } while (appenders.hasMoreElements()) { asyncAppender.addAppender(appenders.nextElement()); } appenders = logger.getAllAppenders(); while (appenders.hasMoreElements()) { logger.removeAppender(appenders.nextElement()); } logger.addAppender(asyncAppender); setProductName(productName); } }
@Override public void activateAsync(List<Object[]> args) { AsyncAppender asyncAppender = new AsyncAppender(); invokeMethod(asyncAppender, args); asyncAppender.setName(productName + "." + logger.getName() + ".AsyncAppender"); Enumeration<Appender> appenders = logger.getAllAppenders(); if (appenders == null) { throw new IllegalStateException("Activate async appender failed, no appender exist."); } while (appenders.hasMoreElements()) { asyncAppender.addAppender(appenders.nextElement()); } appenders = logger.getAllAppenders(); while (appenders.hasMoreElements()) { logger.removeAppender(appenders.nextElement()); } logger.addAppender(asyncAppender); setProductName(productName); } }
LogManager.getRootLogger().addAppender(async); async.addAppender(fileAppender);
@Inject SshLog(final Provider<SshSession> session, final Provider<Context> context, final SitePaths site) { this.session = session; this.context = context; final DailyRollingFileAppender dst = new DailyRollingFileAppender(); dst.setName(LOG_NAME); dst.setLayout(new MyLayout()); dst.setEncoding("UTF-8"); dst.setFile(new File(resolve(site.logs_dir), LOG_NAME).getPath()); dst.setImmediateFlush(true); dst.setAppend(true); dst.setThreshold(Level.INFO); dst.setErrorHandler(new DieErrorHandler()); dst.activateOptions(); dst.setErrorHandler(new LogLogHandler()); async = new AsyncAppender(); async.setBlocking(true); async.setBufferSize(64); async.setLocationInfo(false); async.addAppender(dst); async.activateOptions(); }
@Inject SshLog(final Provider<SshSession> session, final Provider<Context> context, final SitePaths site) { this.session = session; this.context = context; final DailyRollingFileAppender dst = new DailyRollingFileAppender(); dst.setName(LOG_NAME); dst.setLayout(new MyLayout()); dst.setEncoding("UTF-8"); dst.setFile(new File(resolve(site.logs_dir), LOG_NAME).getPath()); dst.setImmediateFlush(true); dst.setAppend(true); dst.setThreshold(Level.INFO); dst.setErrorHandler(new DieErrorHandler()); dst.activateOptions(); dst.setErrorHandler(new LogLogHandler()); async = new AsyncAppender(); async.setBlocking(true); async.setBufferSize(64); async.setLocationInfo(false); async.addAppender(dst); async.activateOptions(); }