Log4j配置与使用

  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
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
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 implements 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>

c.log4j.properties配置

log4j.appender.D.File = ${log4jDir}/logs/log_1.log

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文件配置

待记录

上一篇:C++之const限定符(顶层const,底层const)


下一篇:NOIP2014初赛分数线及金华上线名单