下面以xml格式的log4j配置文件为例说明
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.err"/>
<param name="Threshold" value="ALL"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{HH:mm:ss,SSS}][%p,%c{1}] %m%n"/>
</layout>
</appender>
<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="${log4jdir}/log.txt"/>
<param name="Threshold" value="ALL"/>
<param name="MaxFileSize" value="300KB"/>
<param name="MaxBackupIndex" value="20"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{HH:mm:ss,SSS}][%p,%c{1}] %m%n"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</log4j:configuration>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.err"/>
<param name="Threshold" value="ALL"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{HH:mm:ss,SSS}][%p,%c{1}] %m%n"/>
</layout>
</appender>
<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="${log4jdir}/log.txt"/>
<param name="Threshold" value="ALL"/>
<param name="MaxFileSize" value="300KB"/>
<param name="MaxBackupIndex" value="20"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{HH:mm:ss,SSS}][%p,%c{1}] %m%n"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</log4j:configuration>1 在log4j.xml配置文件中以 ${变量名} 写路径 <param name="File" value="${log4jdir}/log.txt"/>
2 在初始化log4j之前设置系统变量
3 上面d:/webroot/log4j 是写死了的, 但这个路径可以根据实际情况动态获得 比如你想得到WEB-INF的上级路径,可以这么写 这样解决相对web路径的问题
view plaincopy to clipboardprint?
public String getWebRootPath(ServletContextEvent sce) {
return sce.getServletContext().getRealPath("/");
}
public String getWebRootPath(ServletContextEvent sce) {
return sce.getServletContext().getRealPath("/");
}4 很多人喜欢直接把log4j.xml或log4j.properties文件放到classes下而不做DOMConfigurator.configure(log4jfile);这个操作,这时候可以在启动时可使用 java -Dlog4jdir=路径
view plaincopy to clipboardprint?
System.setProperty("log4jdir","d:/webroot/log4j");
String log4jfile = "log4j.xml";
DOMConfigurator.configure(log4jfile);
联系客服