标签:
log4j是Java社区事实上的日志标准解决方案。使用起来比较简单。
一. 简单使用
1.下载jar包放到lib文件夹,并加入到build path中;
2.编写log4j.properties文件,放到classpath目录下;
### set log levels ### log4j.rootLogger = debug , stdout , D , E ### 输出到控制台 ### log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{1}:%L - %m%n ### 输出到日志文件 ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = logs/log_ log4j.appender.D.DatePattern = yyyy-MM-dd‘.log‘ log4j.appender.D.Append = true log4j.appender.D.Threshold = DEBUG ## 输出DEBUG级别以上的日志 log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n ### 保存异常信息到单独文件 ### log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File = logs/error_ ## 异常日志文件名 log4j.appender.D.DatePattern = yyyy-MM-dd‘.log‘ log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR ## 只输出ERROR级别以上的日志!!! log4j.appender.E.layout = org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
3.使用
private Logger logger = Logger.getLogger(this.getClass());
logger.debug("");
logger.error("", e);
说明:在Java项目和Java web项目下是类似的,唯一的区别在于日志文件的位置:
1.在Java项目中,配置的日志文件路径是当前项目在workspace下得相对路径(如上述文件的配置)
2.可以在Java代码中制定配置文件的位置
InputStream input = Thread.CurrentThread.getClass().getClassLoader() .getResourceAsStream("log4j.properties"); PropertyConfigurator.configure(input); Logger logger = Logger.getLogger(Thread.CurrentThread.getClass()); logger.debug("load log4j property file");
二. Java web项目中配置日志文件的位置的方法
1.如上述配置文件内容,无法找到日志文件
2.绝对路径
log4j.appender.D.File = D:\apache-tomcat/webapps/TestLog/logs/log_1.log
3.使用已有JVM变量
log4j.appender.D.File = $(user.home)/logs/log_1.log
4.配置监听器
a.创建监听器
package com.log.listener; public class Log4jListener extends ServletContextListener { public static final String LOG4J_DIR_KEY = "log4jDir"; public void contextDestroyed(ServletContextEvent event) { System.getProperties().remove(LOG4J_DIR_KEY); } public void contextInitialized(ServletContextEvent event) { String log4jDir = event.getServletContext().getRealPath("/"); System.setProperties(LOG4J_DIR_KEY, log4jDir); } }
b.配置web.xml
<listener> <listener-class>com.log.listener.Log4jListener</listener-class> </listener>
5.使用Spring提供的监听器(未验证)
<context-param> <param-name>webAppRootKey</param-name> <!--Spring配置变量名,不可变 --> <param-value>webApp.root</param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j.properties</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <!-- log文件存放于tomcat_home/webapps/project_name/WEB-INF/logs/ -->
三.log4j.properties文件配置
待记录
标签:
原文地址:http://www.cnblogs.com/techroad4ca/p/5107885.html