在我们公司,我们有一个 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
当我们在旋转文件附加器中进行开发时,我们的标准输出流会进入控制台。
由于我们手动打包文件以便在生产中发布,因此我们手动注释这 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
忘记这样做意味着我们将拥有一个标准输出文件,该文件将包含与 CATALINA 滚动文件附加程序相同的信息,但不会滚动,因此将无限期增长,直到磁盘空间饱和并同时变得无用。
有没有一种方法可以让我们不必每次都更改 log4j 配置?
最佳答案
考虑到您关于不使用构建系统的评论,只有一个答案是有意义的:现在开始整合一个答案。如果您认真对待专业软件开发,那么您应该使用专业流程。
你的意思基本上是:“我们没有做强制性的事情;哎呀,这很痛,请让痛苦消失”。
抱歉,但简单的答案是:手动处理的唯一替代方案..是**自动化。就这样 build 吧,否则就要承受不这样做的后果。
当然,你不可能在一夜之间完成这样的事情,但是见鬼:世界其他地方可能已经谈论“持续构建”10年以上,而谈论“持续交付”(又名 DevOps)3年以上了。你们还没有构建系统吗?!
这并不是粗鲁的意思,但看起来你的软件流程是上个千年的;因此,与其担心如何解决这个症状,不如退后一步,对整个开发链进行全面诊断。然后你开始修复它。你可能会发现很多其他的小问题;越早开始,您就能越早获得巨大的效率提升。
你知道,我认为有些公司拥有成功的产品,但在某个时候就消亡了 - 因为这样的手动流程迟早会导致可怕的错误、错误、客户情况……
关于java - log4j:在生产/开发中对标准输出文件/控制台的不同使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38293484/