package com.apache.jakarta.log4j; import org.apache.log4j.PRopertyConfigurator; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Log4jInit extends HttpServlet {
public void init() { String prefix = getServletContext().getRealPath("/"); String file = getInitParameter("log4j"); // if the log4j-init-file is not set, then no point in trying System.out.println("................log4j start"); if(file != null) { PropertyConfigurator.configure(prefix+file); } } public void doGet(HttpServletRequest req, HttpServletResponse res) { } } 这段代码很简单,可以看出,在加载的过程中,程序会读取/WEB-INF/log4j.properties这个文件 这个文件就是本文的重点,也就是log4j的配置文件。
# Set root logger level to DEBUG and its only appender to A1 #log4j中有五级logger #FATAL 0 #ERROR 3 #WARN 4 #INFO 6 #DEBUG 7 #配置根Logger,其语法为: #log4j.rootLogger = [ level ] , appenderName, appenderName, … log4j.rootLogger=INFO, A1 ,R #这一句设置以为着所有的log都输出 #假如为log4j.rootLogger=WARN, 则意味着只有WARN,ERROR,FATAL #被输出,DEBUG,INFO将被屏蔽掉. # A1 is set to be a ConsoleAppender. #log4j中Appender有几层如控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等 #ConsoleAppender输出到控制台 log4j.appender.A1=org.apache.log4j.ConsoleAppender # A1 使用的输出布局,其中log4j提供4种布局. org.apache.log4j.HtmlLayout(以HTML表格形式布局) #org.apache.log4j.PatternLayout(可以灵活地指定布局模式), #org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串), #org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)