日誌_log4j:自定義log4j日誌文件存放路徑

話說這是第一次自己配置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

與第一種方法相同,略!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章