话说这是第一次自己配置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
与第一种方法相同,略!