1、配置web.xml
<servlet> <servlet-name>BaseServlet</servlet-name> <servlet-class>yzx.sv.lt.BaseServelt.BaseServlet</servlet-class> <init-param> <param-name>log4j-xml-path</param-name> <param-value>/WEB-INF/classes/conf/log4j/log4j.xml</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet>
2、完成servlet init()读取配置
package yzx.sv.lt.BaseServelt; import org.apache.log4j.xml.DOMConfigurator; import org.springframework.web.context.support.WebApplicationContextUtils; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; public class BaseServlet extends HttpServlet { public void init() throws ServletException { super.init(); //完成log4j配置 String prefix = getServletContext().getRealPath("/"); String xml = getInitParameter("log4j-xml-path"); if (xml != null) { DOMConfigurator.configure(prefix + xml); } } }
3、配置log4j.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <!-- ========================== 自定义输出格式说明================================ --> <!-- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL --> <!-- #%r 输出自应用启动到输出该log信息耗费的毫秒数 --> <!-- #%c 输出所属的类目,通常就是所在类的全名 --> <!-- #%t 输出产生该日志事件的线程名 --> <!-- #%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n” --> <!-- #%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 --> <!-- #%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10) --> <!-- ========================================================================== --> <!-- ========================== 输出方式说明================================ --> <!-- Log4j提供的appender有以下几种: --> <!-- org.apache.log4j.ConsoleAppender(控制台), --> <!-- org.apache.log4j.FileAppender(文件), --> <!-- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), --> <!-- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), --> <!-- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) --> <!-- ========================================================================== --> <!-- 输出日志到控制台 ConsoleAppender --> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <param name="Threshold" value="DEBUG"></param> <layout class="org.apache.log4j.TTCCLayout"> <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [%p] %l %m%n" /> </layout> </appender> <!-- info级别日志滚动文件,文件大小到达指定尺寸的时候产生一个新的文件 --> <appender name="debugRollingFile" class="org.apache.log4j.RollingFileAppender"> <!-- 设置File参数:日志输出文件名 --> <param name="File" value="/LOG4J/logs/debug.log"></param> <!-- 输出到日志文件的日志门槛(级别) --> <param name="Threshold" value="debug"></param> <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 --> <param name="Append" value="true"></param> <!-- 设置文件大小 --> <param name="MaxFileSize" value="1MB"></param> <!-- 设置文件备份个数 --> <param name="MaxBackupIndex" value="10"></param> <!-- 设置输出文件项目和格式 --> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [%p] %l %m%n" /> </layout> </appender> <!-- info级别日志滚动文件,文件大小到达指定尺寸的时候产生一个新的文件 --> <appender name="infoRollingFile" class="org.apache.log4j.RollingFileAppender"> <!-- 设置File参数:日志输出文件名 --> <param name="File" value="/LOG4J/logs/info.log"></param> <!-- 输出到日志文件的日志门槛(级别) --> <param name="Threshold" value="INFO"></param> <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 --> <param name="Append" value="true"></param> <!-- 设置文件大小 --> <param name="MaxFileSize" value="1MB"></param> <!-- 设置文件备份个数 --> <param name="MaxBackupIndex" value="10"></param> <!-- 设置输出文件项目和格式 --> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [%p] %l %m%n" /> </layout> </appender> <!-- error级别日志滚动文件,文件大小到达指定尺寸的时候产生一个新的文件 --> <appender name="errorRollingFile" class="org.apache.log4j.RollingFileAppender"> <!-- 设置File参数:日志输出文件名 --> <param name="File" value="/LOG4J/logs/error.log"></param> <!-- 输出到日志文件的日志门槛(级别) --> <param name="Threshold" value="ERROR"></param> <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 --> <param name="Append" value="true"></param> <!-- 设置文件大小 --> <param name="MaxFileSize" value="1MB"></param> <!-- 设置文件备份个数 --> <param name="MaxBackupIndex" value="10"></param> <!-- 设置输出文件项目和格式 --> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [%p] %l %m%n" /> </layout> </appender> <!-- 定义全局的日志输出级别,但是在输出目的地的配置中配置的具体输出级别优先级高于全局定义的优先级。--> <!-- 如果在rollingFile中定义<param name="Threshold" value="info" />,那么将会把info以上级别的信息输出 --> <root> <priority value="DEBUG" /> <appender-ref ref="console" /> <appender-ref ref="debugRollingFile" /> <appender-ref ref="infoRollingFile" /> <appender-ref ref="errorRollingFile" /> </root> </log4j:configuration>