protected Appender newAppender(String currentLogFileName, String logFilePattern, PatternLayout layout, TriggeringPolicy tp, ThresholdFilter thresholdFilter, String appenderName, Configuration config) { return RollingRandomAccessFileAppender.createAppender(currentLogFileName, logFilePattern, null, appenderName, "true", null, tp, null, layout, thresholdFilter, "false", null, null, config); }
/** * Get path of the log file for user to see on the WebUI. */ public static String getLogFilePath() { String logFilePath = null; org.apache.logging.log4j.Logger rootLogger = LogManager.getRootLogger(); if (rootLogger instanceof org.apache.logging.log4j.core.Logger) { org.apache.logging.log4j.core.Logger coreLogger = (org.apache.logging.log4j.core.Logger)rootLogger; for (Appender appender : coreLogger.getAppenders().values()) { if (appender instanceof FileAppender) { logFilePath = ((FileAppender) appender).getFileName(); } else if (appender instanceof RollingFileAppender) { logFilePath = ((RollingFileAppender) appender).getFileName(); } else if (appender instanceof RollingRandomAccessFileAppender) { logFilePath = ((RollingRandomAccessFileAppender) appender).getFileName(); } } } return logFilePath; }
/** * Tests LOG4J2-1740 Add CronTriggeringPolicy programmatically leads to NPE */ @Test public void testRollingRandomAccessFileAppender() { // @formatter:off RollingRandomAccessFileAppender.newBuilder() .withName("test2") .withFileName("target/testcmd2.log") .withFilePattern("target/testcmd2.log.%d{yyyy-MM-dd}") .withPolicy(createPolicy()) .withStrategy(createStrategy()) .setConfiguration(configuration) .build(); // @formatter:on }
addAppender(consoleAppender); RollingRandomAccessFileAppender randomAccessFileAppender; randomAccessFileAppender = RollingRandomAccessFileAppender.createAppender(loggingFileName, loggingFileName + "-%d{yyyy-MM-dd-HH}", null, "Rolling", "true", null, timeBasedTriggeringPolicy, null, patternLayout, thresholdFilter, "false", null, null, configuration); randomAccessFileAppender.start(); addAppender(randomAccessFileAppender); rootLogger.addAppender(randomAccessFileAppender, Level.INFO, null); randomAccessFileAppender = RollingRandomAccessFileAppender.createAppender(loggingFileWarnName, loggingFileWarnName + "-%d{yyyy-MM-dd}", null, "RollingWarn", "true", null, timeBasedTriggeringPolicy, null, patternLayout, warnThresholdFilter, null, null, null, configuration); randomAccessFileAppender.start(); addAppender(randomAccessFileAppender); rootLogger.addAppender(randomAccessFileAppender, Level.WARN, null); randomAccessFileAppender = RollingRandomAccessFileAppender.createAppender(loggingFileErrorName, loggingFileErrorName + "-%d{yyyy-MM-dd}", null, "RollingError", "true", null, timeBasedTriggeringPolicy, null, patternLayout, errorThresholdFilter, null, null, null, configuration); randomAccessFileAppender.start(); addAppender(randomAccessFileAppender); rootLogger.addAppender(randomAccessFileAppender, Level.ERROR, null); randomAccessFileAppender = RollingRandomAccessFileAppender.createAppender(loggingFileMonitorName, loggingFileMonitorName + "-monitor.log-%d{yyyy-MM-dd-HH}", null, "RollingMonitor", "true", null, timeBasedTriggeringPolicy, null, msnPatternLayout, thresholdFilter, null, null, null, configuration); randomAccessFileAppender.start(); addAppender(randomAccessFileAppender); randomAccessFileAppender = RollingRandomAccessFileAppender.createAppender(loggingFileRiderMqName, loggingFileRiderMqName + "-%d{yyyy-MM-dd-HH}", null, "RollingRiderMq", "true", null, timeBasedTriggeringPolicy, null, patternLayout, thresholdFilter, null, null, null, configuration); randomAccessFileAppender.start(); addAppender(randomAccessFileAppender); randomAccessFileAppender = RollingRandomAccessFileAppender.createAppender(loggingFileRiderSpaceName, loggingFileRiderSpaceName + "-%d{yyyy-MM-dd-HH}", null, "RollingRiderSpace", "true", null, timeBasedTriggeringPolicy, null, patternLayout, thresholdFilter, null, null, null, configuration); randomAccessFileAppender.start(); addAppender(randomAccessFileAppender);
builder.append(FILE_PARAM, ((RollingRandomAccessFileAppender) appender).getFileName()); builder.append(FILE_PATTERN_PARAM, ((RollingRandomAccessFileAppender) appender).getFilePattern());
@Override public final String logFileName(final String loggerName, final String testStepId) { try (final CloseableThreadContext.Instance logCtx = put(KEY_STEP_ID, testStepId)) { final Logger logger = LogManager.getLogger(loggerName); final Appender appender = ((AsyncLogger) logger).getAppenders().get("opTraceFile"); final String filePtrn = ((RollingRandomAccessFileAppender) appender).getFilePattern(); return filePtrn.contains(LOG_CONFIG_STEP_ID_PTRN) ? filePtrn.replace(LOG_CONFIG_STEP_ID_PTRN, testStepId) : filePtrn; } }
@Override public void start() { appender.start(); }
@Override public void append(LogEvent event) { appender.append(event); }
@Override public Layout<? extends Serializable> getLayout() { return appender.getLayout(); }
@Override public ErrorHandler getHandler() { return appender.getHandler(); }
return new RollingRandomAccessFileAppender(name, layout,getFilter(), manager, fileName, filePattern, isIgnoreExceptions(), immediateFlush, bufferSize, advertise ? getConfiguration().getAdvertiser() : null);
public LogServlet() { logFileNamePatternByName = Arrays.stream(Loggers.class.getFields()) .map( field -> { try { return field.get(null); } catch (final Exception e) { throw new AssertionError(e); } }) .filter(fieldVal -> fieldVal instanceof Logger) .map(o -> (Logger) o) .filter(logger -> logger.getName().startsWith(Loggers.BASE)) .collect( Collectors.toMap( logger -> logger.getName().substring(Loggers.BASE.length()), logger -> ((AsyncLogger) logger) .getAppenders().values().stream() .filter( appender -> appender instanceof RollingRandomAccessFileAppender) .map( appender -> ((RollingRandomAccessFileAppender) appender) .getFilePattern()) .findAny() .orElse(""))); }
protected String logFilename() { if (this.logFilename == null) { org.apache.logging.log4j.Logger logger = LogManager.getLogger(); Map<String, Appender> appenderMap = ((org.apache.logging.log4j.core.Logger) logger).getAppenders(); for (Map.Entry<String,Appender> e : appenderMap.entrySet()) { String filename = null; Appender appender = e.getValue(); if (appender instanceof FileAppender) { filename = ((FileAppender)appender).getFileName(); } else if (appender instanceof RollingFileAppender) { filename = ((RollingFileAppender)appender).getFileName(); } else if (appender instanceof RandomAccessFileAppender) { filename = ((RandomAccessFileAppender)appender).getFileName(); } else if (appender instanceof RollingRandomAccessFileAppender) { filename = ((RollingRandomAccessFileAppender)appender).getFileName(); } if (filename != null) { classLogger.debug("Using \"{}\" as the file for the server log.", filename); this.logFilename = filename; return this.logFilename; } } // no file appender found, use default DICOMLOG.log classLogger.debug("No file appender found, using \"DICOMLOG.log\" as the default logger"); this.logFilename = Platform.homePath() + "DICOMLOG.log"; } return this.logFilename; }
@PluginFactory public static PerNodeRollingRandomAccessFileAppender createAppender( @PluginAttribute("fileName") final String fileName, @PluginAttribute("filePattern") final String filePattern, @PluginAttribute("append") final String append, @PluginAttribute("name") final String name, @PluginAttribute("immediateFlush") final String immediateFlush, @PluginAttribute("bufferSizeStr") final String bufferSizeStr, @PluginElement("Policy") final TriggeringPolicy policy, @PluginElement("Strategy") RolloverStrategy strategy, @PluginElement("Layout") Layout<? extends Serializable> layout, @PluginElement("Filter") final Filter filter, @PluginAttribute("ignoreExceptions") final String ignore, @PluginAttribute("advertise") final String advertise, @PluginAttribute("advertiseURI") final String advertiseURI, @PluginConfiguration final Configuration config) { RollingRandomAccessFileAppender appender = RollingRandomAccessFileAppender.createAppender( appendNodeIndex(fileName), appendNodeIndex(filePattern), append, name, immediateFlush, bufferSizeStr, policy, strategy, layout, filter, ignore, advertise, advertiseURI, config); return new PerNodeRollingRandomAccessFileAppender(appender); }
final int bufferSize = Integers.parseInt(bufferSizeStr, RollingRandomAccessFileManager.DEFAULT_BUFFER_SIZE); return RollingRandomAccessFileAppender.<B>newBuilder() .withAdvertise(isAdvertise) .withAdvertiseURI(advertiseURI)