使用log4j
优于System.out.Println
的性能明智优势是什么?
仅供参考:我知道log4j
有多个appender,调试日志记录和System.Out.println
没有的其他功能,并且在类级别也适用,并且在大型应用程序中使用。
但是,如果我有一个小应用程序,请说文件log4j
将提供比System.Out.println
更好的性能。内部log4j
如何运作?
答案 0 :(得分:1)
Log4j无权获得更高的性能。它的创建是为了具有更多能力来减少日志量并指定日志输出。想象一下Tomcat服务器,它记录了大量的hibernate数据库访问。例如。使用日志级别,您可以通过此信息日志停止服务器紧张。但这不是“本机”性能优势,因为您可以在sysos之前使用标志检查来模拟这一点。
答案 1 :(得分:0)
我能想到的唯一一种情况是使用log4j
而不是System.out.println
来感知性能优势,例如,如果这样做:
logger.debug("Logging something");
而不是这样做:
System.out.println("Logging something");
然后以不需要记录调试消息的方式配置日志记录级别。 在这种情况下,第一行不会实际记录,但第二行仍将写入System.out。
在所有其他情况下(我的意思是,在实际完成日志记录的所有情况下)我都不认为使用log4j 性能明智会更快。
通常它用于你陈述的所有原因,并且因为性能没有那么不同(与在文件上写东西的实际时间相比,框架开销很小)。