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(包含日志產生的時間、線程、類別等等信息)