我正在使用 slf4j,实现 log4j 来登录我的 java 项目。目前我有 2 个附加程序,文件和控制台。
我想知道以下两件事:
使用多个附加程序(在本例中为 CONSOLE 和 FILE)是否会导致日志记录出现性能问题?
当有人想要同时使用 CONSOLE 和 FILE 附加程序时?
写入 CONSOLE 和 FILE 时,您正在写入 2 个不同的流。在多线程系统中,对性能的影响不会很大,但在大容量下它仍然很明显。
来自log4J 手册
The typical cost of actually logging is about 100 to 300 microseconds.
这包括构建语句并编写它,但是如果您大量记录,编写所花费的时间仍然很明显。
但是你需要问一个更基本的问题——你为什么要记录?
CONSOLE 对于第一部分没有用,因为日志没有保存在任何地方。如果日志记录很重,并且所有日志都发送到 CONSOLE,那么日志的数量将使控制台上的输出不可读,因此目的 2 也失败了。
IMO 使用less之类的东西从文件中读取日志更有意义。作为一般做法,您记录到文件,如果必须,仅将错误消息记录到控制台,因为一些错误消息将表明出现问题,而控制台上的数百条日志行只是垃圾,因为您不能当控制台刷新得如此之快时,请理解它。
TL-DR
成本可能并不多,但是当您没有获得额外的优势时,为什么还要承担额外的成本呢?
阅读有关 log 4j 性能的这些链接。 log4j-performance log4j-decreased application performance log4j appenders