在 apache-tomcat 中,使用 log4j 或 java.util.logging 等日志记录框架是否有任何性能优势,而不是打印到 stdout,后者被转储到 catalina.out(这是默认行为)?
在我的用例中,两者在功能上都是相同的,因为我不需要对记录的消息进行任何额外的格式化。
我想知道在这里使用日志框架的好处。
提前致谢!
从这个角度来看,您不会看到性能优势,只需使用提供您功能的任何东西。
无论如何,添加 log4j 之类的东西非常容易,并且提供了更多未来的灵活性,我什至不会想到依赖 stdout 来输出 webapp,无论我目前的要求有多么有限。
编辑:这不仅仅是消息的格式,包括编写日志条目的类、代码行、线程名称等 - 一旦你使用所有这些都可以“免费”包含在日志中日志框架,它们只是在标准输出中不可用。
除了格式化之外,使用记录器代替打印到控制台还有很多优点。还有性能。例如,您可以在日志级别之前简单地切换以实现更好的性能。使用正确的记录器(如 logback)时,您可以获得额外的性能。例如 logback 在日志消息中有功能使用占位符
log.debug ("Result of big function = {}", bigAndLongMethod())
这会更快
log.debug("Result of big function = " + bigAndLongMethod())
因为在第一种情况下,bigAndLongMethod()
如果您的日志级别高于调试,则不会执行。
使用一些额外的附加程序可以提高性能,即将日志重定向到其他主机或登录到数据库。
作为额外的好处,您将在您的项目中获得更多符合标准的日志支持,并且您将来会对它更加满意,即使您现在看不到任何差异。