1、首先將log4j-1.2.8.jar包含入類路徑中。
2、Log4J必須在應用的其它代碼執行前完成初始化。其初始化內容如下:
import java.io.*; import javax.servlet.*; import org.apache.log4j.*; public class Log4JInit extends HttpServlet { public void init() throws ServletException { String prefix = getServletContext().getRealPath("/"); String file = getServletConfig().getInitParameter("log4j-config-file"); // 從Servlet參數讀取log4j的配置文件 if (file != null) { PropertyConfigurator.configure(prefix + file); } } public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException {} public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException {} }
3、web.xml內容配置如下:具體的文件放在 路徑:\webapps\項目名稱\WEB-INF\web.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>log4jinit</servlet-name> <servlet-class>com.iss.common.util.Log4JInit</servlet-class>//這裡換換成具體的初始化文件包 <init-param> <param-name>log4j-config-file</param-name> <param-value>WEB-INF\log4j.properties</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> < type="text/javascript"> <!-- Establish the default list of welcome files --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> </welcome-file-list> <error-page> <error-code>404</error-code> <location>/FileNoFound.jsp</location> </error-page> </web-app>
注意:上面的load-on-startup應設為1,以便在Web容器啟動時即裝入該Servlet。log4j.properties文件放在根的properties子目錄中,也可以把它放在其它目錄中。應該把.properties文件集中存放,這樣方便管理。
4、log4j.properties的配置,具體的路徑在\webapps\項目名稱\WEB-INF\log4j.properties
在配置文件中即log4j.properties中這樣設置:
#設置成根目錄,所有包括debug以上級別的信息都打印出來到日志文件中 log4j.rootLogger=debug, stdout #設置為debug,表示只能打印出debug級別的信息 log4j.logger.debug=debug, R #設置成info,表示只能打印出info級別的信息 log4j.logger.info=info,s #設置成error,表示只能打印出error級別的信息 log4j.logger.error = error,k #輸出debug級別以上的信息到控制台 og4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout # Pattern to output the caller's file name and line number. log4j.appender.stdout.layout.ConversionPattern=(%F:%L) - %m%d%n 打印debug級別的信息到debugInfo.log log4j.appender.R=org.apache.log4j.DailyRollingFileAppender log4j.appender.R.File=c:/webapps/debugInfo.log log4j.appender.R.DatePattern='.'yyyy-MM-dd'.txt' log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%d [%F:%L] - %m \r\n #打印info級別的信息到info.log log4j.appender.s=org.apache.log4j.RollingFileAppender log4j.appender.s.File= c:/webapps/info.log < type="text/javascript"> # Control the maximum log file size log4j.appender.s.MaxFileSize=100KB # Archive log files (one backup file here) log4j.appender.s.MaxBackupIndex=1 log4j.appender.s.layout=org.apache.log4j.PatternLayout log4j.appender.s.layout.ConversionPattern=%p %t %c - %m%d%n #打印error級別的信息到errorInfo.log中 log4j.appender.k=org.apache.log4j.DailyRollingFileAppender log4j.appender.k.File=C:/Program Files/Apache Tomcat 4.0/webapps/PSA/log/error_8080.log //log4j.appender.R.Append = true log4j.appender.k.DatePattern='.'yyyy-MM-dd'.txt' log4j.appender.k.layout=org.apache.log4j.PatternLayout log4j.appender.k.layout.ConversionPattern=%d [%F:%L] - %m \r\n
5、在類中的的設置如下:
class類中如下:
static Logger debugLog=new Logger.getLogger("debug")
static Logger infoLog=new Logger.getLogger("info")
static Logger errorLog=new Logger.getLogger("error")
這樣不同級別的log信息就可以打在不同的log文件中.
例如debugLog.debug("");就打印到上面的debuginfo中。
InfoLog.info("");就打印到上面的infoLog中。