显示多行文本的每行日志

Pra*_*eek 12 logging log4net log4j

说我有一个多行文字"a \nb \nc"; 当我记录它时,例如使用"debug"方法,我只得到一个日志;

这是预期的行为,但是输出中左侧也会显示排除第一行的行:

1234 [1] [DEBUG] Test - a
b
c
1235 [1] [DEBUG] Test - ...
Run Code Online (Sandbox Code Playgroud)

一个简单的解决方法是每行生成一个日志以获取:

1234 [1] [DEBUG] Test - a
1235 [1] [DEBUG] Test - b
1236 [1] [DEBUG] Test - c
1237 [1] [DEBUG] Test - ...
Run Code Online (Sandbox Code Playgroud)

_

有没有办法自动进行这种处理,还是应该编写一个简单的包装来管理这个设置?

_

提前致谢.

dar*_*ioo 10

不可能,也不推荐.

在你的第一个例子中,很明显存在两个日志语句,而在你的第二个例子中,人们可能会一眼就看出其中有四个.

一个日志语句应提供有关发生的事件和发生的时间的单一来源信息,并且该信息在某种程度上应该是有用的.

想象一下,如果你有一个错误语句,比如异常,由于它的堆栈跟踪,它将跨越30行左右.在您的情况下,这看起来像30个错误,自动化工具也可能将其报告为30个错误.这是错误的信息,应该避免.

更不用说"一个日志声明!=一个写入的日志"可能会导致同步破坏,当您处理更复杂的日志记录情况时,多个线程同时写入同一文件,或者更糟糕的是,多个JVM这样做.

如果"左边太远"的事情让你感到非常悲痛,我建议对生成的日志文件进行一些后期处理,例如在不包含[DEBUG]的每一行的开头添加8个空格左右,[INFO],......