java - 如何修复记录器在同一行上随机记录,即使它设置为以新行开始每个日志
问题描述
我正在使用 log4j 在 java 代码中记录事件。我将它设置为将每个日志行作为新行开始,带有时间戳、线程、日志级别和日志运行的类。所以配置看起来像这样:
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
logger = loggerContext.getLogger("com.asdf");
logger.setAdditive(true);
PatternLayoutEncoder encoder = new PatternLayoutEncoder();
encoder.setContext(loggerContext);
encoder.setPattern("%-5level %d [%thread:%M:%caller{1}]: %message%n");
encoder.start();
cucumberAppender = new CucumberAppender();
cucumberAppender.setName("cucumber-appender");
cucumberAppender.setContext(loggerContext);
cucumberAppender.setScenario(scenario);
cucumberAppender.setEncoder(encoder);
cucumberAppender.start();
logger.addAppender(cucumberAppender);
loggerContext.start();
logger().info("*********************************************");
logger().info("* Starting Scenario - {}", scenario.getName());
logger().info("*********************************************\n");
}
@After
public void showScenarioResult(Scenario scenario) throws InterruptedException {
logger().info("**************************************************************");
logger().info("* {} Scenario - {} ", scenario.getStatus(), scenario.getName());
logger().info("**************************************************************\n");
cucumberAppender.writeToScenario();
cucumberAppender.stop();
logger.detachAppender(cucumberAppender);
logger.detachAndStopAllAppenders();
}
大多数情况下正确输出日志,如下所示:
15:59:25.448 [main] INFO com.asdf.runner.steps.StepHooks -
********************************************* 15:59:25.449 [main] INFO com.asdf.runner.steps.StepHooks - * Starting Scenario - Check Cache 15:59:25.450 [main] INFO com.asdf.runner.steps.StepHooks -
********************************************* 15:59:25.558 [main] DEBUG org.cache2k.core.util.Log - New instance, using SLF4J logging 15:59:25.575 [main] INFO org.cache2k.core.Cache2kCoreProviderImpl - cache2k starting. version=1.0.1.Final, build=undefined, defaultImplementation=HeapCache 15:59:25.629 [main] DEBUG org.cache2k.CacheManager:default - open name=default, id=wvl973, classloaderId=6us14y
但是,有时记录器的下一行写在上面的行上,而不使用新行,如下所示:
15:59:27.353 [main] INFO com.asdf.cache.CacheService - Creating a cache for [Kafka] service with specific types.15:59:27.354 [main] INFO com.asdf.runner.steps.StepHooks - **************************************************************
15:59:27.354 [main] INFO com.asdf.runner.steps.StepHooks - * PASSED Scenario - Check Cache
15:59:27.354 [main] INFO com.asdf.runner.steps.StepHooks - **************************************************************
如您所见,第一行 StepHooks 与 CacheService 在同一行,这是不美观的。
我可以更改什么以使日志始终登录新行,没有这样的例外?
解决方案
推荐阅读
- usb - Type-C USB-C 触发器 - 设置允许的最低电压
- windows - 无法确认手动添加了注册表项
- django - 在 Django React 站点中处理 PDF 创建的位置
- bash - 如何对 CSV 文件中的多列进行排序
- python - 如何在 python 中计算标准化残差?
- google-cloud-platform - 谷歌自然语言 API 是否使用 BERT?
- java - 更改设备的方向会刷新片段活动
- c# - 如何在 WPF Core 应用程序中“添加新数据源”?
- lua - 传递一个 lua 表作为参数
- wordpress - GravityForms, GravityViews, action hook 知道记录何时被批准