对于使用logger框架的apache-tomcat与将STDOUT重定向到catalina.out

时间:2013-02-11 15:17:06

标签: java apache tomcat logging

在apache-tomcat中有什么性能优势使用一些日志框架如log4j或java.util.logging而不是打印到stdout,它被转储到catalina.out(这是默认行为) ?

功能上两者对于我的用例都是相同的,因为我不需要为记录的消息添加任何额外的格式。

我想知道在这里使用日志框架的好处。

提前致谢!

2 个答案:

答案 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。

作为额外的好处,您将在项目中获得更多标准的日志支持,并且您将来会更加满意它,即使您现在看不出任何差异。