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