自定义log4j日志文件存放路径

来源:互联网 发布:cf真正刷枪软件 编辑:程序博客网 时间:2024/05/29 07:35

话说这是第一次自己配置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  #filelog4j.appender.logfile=org.apache.log4j.FileAppenderlog4j.appender.logfile.File=${log4jdir}/WEB-INF/logs/jyjc.log      log4j.appender.logfile.layout=org.apache.log4j.PatternLayoutlog4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m %nlog4j.logger.java.sql.ResultSet=DEBUG  log4j.logger.org.apache=INFOlog4j.logger.java.sql.Connection=DEBUG  log4j.logger.java.sql.Statement=DEBUG  log4j.logger.java.sql.PreparedStatement=DEBUG    

二:写servlet

与第一种方法相同,略!

0 0