如何使写入标准输出的所有内容都有日期/时间前缀?
更多背景。我的应用程序通过log4j2将日志文件写入日志文件,但我们还有另一个日志文件,称为CatchAll.log,对于所有非记录器输出来说,这是一种“全部捕获”。这个文件通常包含Java垃圾收集器输出、对System.out.println()的调用以及其他内容。CatchAll.log没有一个很好的前缀,比如“2035年5月7日16:03:22”,所以我经常在里面找到错误消息,无法确定它们何时发生。
编辑
另外,CatchAll.log是由流程管理器生成的。我无法控制流程管理器的代码,也无法迁移。
我假设这个文件得到所有的标准输出,但我不确定。
发布于 2020-03-06 00:03:32
听起来,您已经编写了将System.out重定向到文件的东西。如果是这样的话,您应该能够任意操作数据流。例如,您可以检查数据流,每当您看到新行时,您可以设置一个新的行标志,当收到更多内容时,在写入新数据之前先写出前缀。
作为一个稍微复杂一些的替代方法,您可以将数据传递给Log4j2 Logger方法之一,而不是自己格式化。在这种情况下,可以使用PatternLayout来格式化消息。您还需要确保在log4j2.xml中不要使用ConsoleAppender写入System.out,否则最终会陷入无穷无尽的循环。
https://stackoverflow.com/questions/60553922
复制相似问题