Java webapp在开发/测试/生产阶段的不同日志级别

Java webapp在开发/测试/生产阶段的不同日志级别,java,web-applications,logging,tomcat,Java,Web Applications,Logging,Tomcat,我们的webapp有很多调试和信息日志,这显然对开发非常有帮助。一旦我们将.war文件部署到测试/生产服务器,log4j.properties也会部署,这会导致日志文件中出现大量调试和信息语句 如果我们只想在开发机器上查看调试日志级别,在测试服务器上查看信息,在生产服务器上查看警告,那么最佳做法是什么?是否有一个全局tomcat配置,我可以在其中设置一个日志级别,覆盖每个webapp的各个日志设置?还是maven在构建时替换log4j.properites文件才是正确的做法?我更喜欢让应用程序“

我们的webapp有很多调试和信息日志,这显然对开发非常有帮助。一旦我们将.war文件部署到测试/生产服务器,log4j.properties也会部署,这会导致日志文件中出现大量调试和信息语句


如果我们只想在开发机器上查看调试日志级别,在测试服务器上查看信息,在生产服务器上查看警告,那么最佳做法是什么?是否有一个全局tomcat配置,我可以在其中设置一个日志级别,覆盖每个webapp的各个日志设置?还是maven在构建时替换log4j.properites文件才是正确的做法?

我更喜欢让应用程序“知道”它所处的环境。这可能是您正在使用的框架、应用程序的构建的一个功能,或者可以通过将环境变量作为JVM参数传递给它来实现,然后在初始化记录器时,您可以让它检查该参数。具体的实现细节取决于您的webapp使用的框架(如果有的话)、您正在使用的记录器类型等。使用诸如向JVM传递参数之类的功能的好处是,您可以让记录器关闭应用所处的环境,而不必担心构建(和测试)问题每个环境都有不同的软件包。

如果使用maven方式,我会发现以下几点: