話說這是第一次自己配置log4j,以前都是拿來就用,完全沒想過這個問題。
log4j的配置文件還是比較好用的,只要編譯後log4j.properties文件是在classes目錄下,它就會自動查找這個文件。
把記錄日誌放到文件中也是比較好配置的,問題是這個日誌文件在哪兒,死活沒找到?這讓我有些慌張,如果不自己定義路徑,將它控制住,就會覺得有些不舒服。
在網上搜了大半天,關於log4j講解的文章可謂是多如牛毛,然後就在這些牛毛中提取出了我自己覺得相對好用一點的方法。
一:寫監聽
1.寫一個日誌監聽類,讓它實現ServletContextListener,在此類中定義日誌文件的存放路徑。Log4jListener.java
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class Log4jListener implements ServletContextListener{
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("this is last destroyeed");
}
public void contextInitialized(ServletContextEvent arg0) {
String log4jdir = arg0.getServletContext().getRealPath("/");
System.setProperty("log4jdir", log4jdir);
}
}
2.將監聽配置在web.xml文件中,容器一啓動就開啓監聽。web.xml
<listener>
<listener-class>com.adtech.jyjc.utils.Log4jListener</listener-class>
</listener>
3.在log4j中引用已定義的路徑。log4j.properties
log4j.rootLogger=INFO,Console,logfile
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
#file
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=${log4jdir}/WEB-INF/logs/jyjc.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m %n
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
二:寫servlet
與第一種方法相同,略!