【发布时间】:2022-01-19 02:16:59
【问题描述】:
我正在编写一个命令行 Java 程序,每次启动应用程序时,我都想记录到一个新文件(目前,我使用当前时间戳作为日志文件的名称)。我的应用程序还使用了许多也记录内容的库。如何动态创建一个记录器,它将获取我的代码的日志记录+库完成的任何日志并将其重定向到控制台+一个新文件?我正在使用 SLF4j + logback。到目前为止,我有类似下面的东西可以动态创建记录器,但这个记录器不捕获第三方日志记录:
public static Logger createLogger(String pattern) {
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
PatternLayoutEncoder layoutEncoder = new PatternLayoutEncoder();
layoutEncoder.setPattern(pattern);
layoutEncoder.setContext(loggerContext);
layoutEncoder.start();
FileAppender<ILoggingEvent> fileAppender = new FileAppender<>();
fileAppender.setFile(System.currentTimeMillis() + ".log");
fileAppender.setEncoder(layoutEncoder);
fileAppender.setContext(loggerContext);
fileAppender.start();
ch.qos.logback.classic.Logger logger = loggerContext.getLogger("customLogger");
logger.addAppender(fileAppender);
logger.setLevel(Level.TRACE);
logger.setAdditive(true);
return logger;
}
【问题讨论】:
标签: java logging logback slf4j