java - log4j:在生产/开发中对标准输出文件/控制台的不同使用

标签 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

当我们在旋转文件附加器中进行开发时,我们的标准输出流会进入控制台。

由于我们手动打包文件以便在生产中发布,因此我们手动注释这 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/

相关文章:

asp.net - 如何跟踪生产环境中偶发的 ASP.NET 性能问题?

java - 如何指定 2 个 log4j 文件,它们在日志字段中都有单独的类名

java - log4j:将特定类的输出记录到特定的附加程序

java - 如果我将 long 数据类型分配给 float 数据类型,为什么会出现舍入错误?

java - 依赖 JAR 和源 JAR?

java - spring-boot 中的 json 日期格式

java - 如何覆盖所有导入的 Java 库的 log4j 属性?

java - 异常 : java.net.SocketException:打开的文件太多

scala - 在 Actors 外部登录 Akka TestKit

linux - 在日志文件中查找间隔