log4j:在生产/开发中不同地使用stdout文件/控制台

时间:2016-07-10 15:28:31

标签: java logging log4j

在我们公司,我们有一个log4j配置如下:

log4j.rootLogger=INFO, CATALINA, stdout

# Used only for development.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

# Define all the appenders
# configurazione catalina con meteodo di rotazione in base alla size
log4j.appender.CATALINA=org.apache.log4j.RollingFileAppender
log4j.appender.CATALINA.File=${catalina.base}/logs/catalina.
log4j.appender.CATALINA.Encoding=UTF-8
log4j.appender.CATALINA.MaxFileSize=100MB
log4j.appender.CATALINA.MaxBackupIndex=10 
log4j.appender.CATALINA.layout=org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern=%d %p %t %c - %m%n




# Log all JDBC parameters
log4j.logger.org.hibernate.SQL=TRACE
log4j.logger.com.mchange.v2.c3p0=DEBUG

当我们在旋转文件追加器中开发AND时,我们的stdout流进入控制台。

由于我们手动打包我们的文件以便在生产中发布,我们手动注释这3行和第一行的stdout部分。 每次

# Used only for development.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

忘记这样做意味着我们将有一个stdout文件,它将包含与CATALINA滚动文件appender相同的信息,但不会滚动,因此将无限增长,直到饱和磁盘空间并且同时无用。 / p>

有没有办法让log4j配置我们不必每次都改变?

1 个答案:

答案 0 :(得分:1)

根据您对不使用构建系统的评论,只有一个答案是有意义的:开始将现在拉到一起。如果您认真对待专业软件开发,那么您应该使用专业流程。

你基本上说的是:"我们没有做强制性的事情;和哎哟,疼,请让疼痛消失"。

很抱歉,但简单的答案是: only 替代手动处理..是**自动化。如此构建,或者生活在不这样做的后果。

当然,你不能在一夜之间做这些事情,但是哎呀:世界其他地方正在谈论"持续建设"可能已经超过10年了,并且大约有34年来连续交付",也就是DevOps。你们这些人没有建立系统吗?!

这并不意味着粗鲁,但似乎您的软件流程来自上一个千年;因此,不要担心如何治愈这一个症状 ......你最好退后一步,对你的完整开发链做一个完整的诊断。然后你开始修复它。您可能会发现许多其他小问题;而且越早开始,您就能越早获得效率的巨大收益。

而且你知道,我认为那些有成功产品的公司在某些时候就已经死了 - 因为这些手动过程迟早会导致严重的错误,错误,消费者情况......