我想根据访问应用程序的TEST / PROD服务器动态更改日志级别。
我们的Web应用程序有很多DEBUG和INFO,错误日志语句。一旦我们将.war文件部署到测试/生产服务器,
log4j.xml
也被部署,导致日志文件中出现大量DEBUG和INFO语句。
如何仅显示PROD服务器中的错误日志以及DEV / TEST服务器中的调试和错误日志。 Apache Tomcat是我们用于部署应用程序的服务器。
的log4j.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
<!-- This appender logs to the console -->
<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%-5p] [%c{1}] [%M:%L] - %m%n"/>
</layout>
</appender>
<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${catalina.home}/logs/myProject.log"/>
<param name="append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L %m %n" />
</layout>
</appender>
<!-- Set "debug" log level for project code -->
<logger name="com.choonchernlim.myproject">
<level value="info"/>
</logger>
<!-- Set "info" log level for Spring framework -->
<logger name="org.springframework">
<level value="info"/>
</logger>
<!-- Set "debug" log level for Hibernate framework -->
<logger name="org.hibernate">
<level value="debug"/>
</logger>
<root>
<!-- The default log level is "warn" -->
<priority value="warn"/>
<appender-ref ref="consoleAppender"/>
</root>
</log4j:configuration>
包含在web.xml中的标记下方:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.xml</param-value>
</context-param>
我能想到的一种方法是从setenv.bat
修改apachetomcatserver\bin
并添加loglevel
。但是如何在loglevels
文件中动态设置log4j.xml
???
在tomcatserver中:catalinahome\bin\setenv.bat
set loglevel=error
如何动态设置loglevel
,以便在TEST中部署应用程序时显示所有日志,并且在PROD中部署时,日志文件中仅显示错误日志消息。
我正在使用log4j1.2,spring,java
。
答案 0 :(得分:0)
您必须为相应的环境创建不同的log4j.xml文件。然后在startUp期间,您可以简单地提供它应该使用的log4j.xml配置的路径。
申请参数:
-Dlog4j.configuration=path/to/env/folder/log4j.xml
答案 1 :(得分:0)
如果您使用的是spring框架,则可以使用logback进行日志记录配置,然后根据活动的spring配置文件控制日志级别。
您可以通过以下示例获得一些帮助 -