5 java logging asynchronous log4j
我正在使用 Log4J 2.10。
我正在尝试以编程方式创建异步记录器\附加程序。我需要有两件事:
我可以想出下面的代码。但我无法将 RollingFileAppender 添加到 AsyncAppender。网上有使用 AsyncAppender.wrap 的例子。但是该 API 似乎不适用于 Log4J 2.10。
你知道我怎么能做到这一点吗?
void createLog4JLogger(final String logFilePath) {
LoggerContext context = (LoggerContext) LogManager.getContext();
final Configuration config = context.getConfiguration();
final PatternLayout patternLayout = PatternLayout.newBuilder().withPattern(CONVERSION_PATTERN).withCharset(Charset.defaultCharset()).build();
final RollingFileAppender fileAppender =
RollingFileAppender.newBuilder().withName(APPENDER_NAME).withLayout(patternLayout).withFileName(logFilePath).build();
AppenderRef ref = AppenderRef.createAppenderRef(APPENDER_NAME, null, null);
AppenderRef[] refs = new AppenderRef[] {ref};
final AsyncAppender asyncAppender = AsyncAppender.newBuilder().setAppenderRefs(refs).setName(APPENDER_NAME).setConfiguration(config).build();
LoggerConfig loggerConfig = LoggerConfig.createLogger(false, Level.INFO, LOGGER_NAME, LOGGER_NAME, refs, null, null, null);
loggerConfig.addAppender(asyncAppender, null, null);
config.addAppender(asyncAppender);
config.addLogger(LOGGER_NAME, loggerConfig);
context.updateLoggers(config);
final Logger logger = LogManager.getContext().getLogger(LOGGER_NAME);
logger.info("HELLO_WORLD");
}
Run Code Online (Sandbox Code Playgroud)
小智 0
您可以使用下面的代码在 log4j 2 中创建异步记录器。
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Configuration config = ctx.getConfiguration();
Layout layout = PatternLayout.newBuilder().withConfiguration(ctx.getConfiguration()).withPattern("%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - test %msg%n").build();
Appender appender = FileAppender.newBuilder().withFileName("logs/test.log").setLayout(layout)
.setConfiguration(config).setName("TestApp").build();
AppenderRef ref = AppenderRef.createAppenderRef("TestApp",Level.INFO, null);
config.addAppender(appender);
appender.start();
AppenderRef[] refs = new AppenderRef[] {ref};
LoggerConfig loggerConfig= AsyncLoggerConfig.createLogger(true, Level.INFO, "test","test", refs, null, config, null);
loggerConfig.addAppender(appender, Level.INFO, null);
config.addLogger("test", loggerConfig);
loggerConfig.start();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
702 次 |
| 最近记录: |