@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; } }
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(""))); }