我正在使用slf4j,实现log4j来登录我的java项目。目前我有两个appender,FILE和CONSOLE。
我想知道以下两件事:
使用多个appender(在本例中为CONSOLE和FILE)会导致日志记录中的性能问题吗?
当有人想要使用CONSOLE和FILE appender时?
答案 0 :(得分:1)
写入CONSOLE和FILE时,您正在写入2个不同的流。在多线程系统中,性能影响不会太大,但是体积很大时仍然很明显。
The typical cost of actually logging is about 100 to 300 microseconds.
这包括构建语句并编写语句,但如果您正在大量记录,写入时间仍然很明显。
但是你需要问一个更基本的问题 - 你为什么要登录?
CONSOLE对第一部分没用,因为日志不会保存在任何地方。如果日志记录很重,并且所有日志都发送到CONSOLE,则日志量将使控制台上的输出不可读,因此目标2也会失败。
IMO使用 less 之类的东西从文件中读取日志更有意义。作为一般做法,你登录到文件,如果必须,只记录ERROR消息到控制台,因为一些ERROR消息将指示出错的地方,而控制台上的数百条日志行只是垃圾,因为你不能当控制台如此迅速地刷新时,对它有任何意义。
<强> TL-DR 强>
成本可能不会太高,但是为什么在没有额外优势的情况下会产生额外的成本呢?
阅读log 4j性能上的这些链接。 log4j-performance log4j-decreased application performance log4j appenders
答案 1 :(得分:0)