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

待记录

时间: 2024-08-11 09:56:40

Log4j配置与使用的相关文章

log4j配置后行号乱码显示为?问号

debug="true"  classpathref="accrual.path" > 首发于 http://blog.xfuse.cn 参考文档 http://ant.apache.org/manual/CoreTasks/javac.html Log4j配置 log4j.appender.C1.layout.ConversionPattern=%F(%L)-- %-4r %-5p [%t] %37c %3x - %m%n 如果是用JAVAC编绎,那么直接加

log4 log4j配置

  log4j配置 Log4j支持两种配置文件格式,一种是XML格式的文件,一种是properties格式的文件. 1.log4j.properties配置方法: 步骤: 0.下载log4j的jar包: 1.新建java项目: 2.新建包: 3.新建类: 4.在src下新建log4J.properites文本文件[日志配置文件] 5.新建lib文件夹:[存放第三方jar包] 6.新建bin文件夹:[存放生成的.class文件] 如下图: package com.loveryw; import o

项目重构之数据源配置与优化:log4j 配置数据库连接池Druid,并实现日志存储到数据库

作者:泥沙砖瓦浆木匠 个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 如果我的帮到了你,是否乐意捐助一下或请一杯啤酒也好呢?有你支持,干的更好~ 点这参与众筹 我的支付宝:13958686678 一. 前言 泥瓦匠又和大家见面了,最近两天我在Code Review ,顺便代码小小的Refactoring(重构)下.先了解这个项目吧,这次解决的是数据源配置优化.因为这web项目中配置数据源的地方很多.例如JDBC要配置数据源,Mybatis要配置数据源,Quartz定时任务要配

log4j配置中遇到的问题

log4j配置后启动的时候报java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.LogManager的原因是,在不缺少jar的包的情况下,错误就发生在log4j.properties中,我的错误就是因为log4j.appender.FILE.DatePattern=yyyy-MM-dd -HH.log,日志根据日期格式生成,如果后面需要加别的内容,必须将其后的内容放在引号中,所以应该改成log4j

springmvc log4j配置

添加依赖 1 <properties> 2 <spring.version>4.1.0.RELEASE</spring.version> 3 <slf4j.version>1.7.13</slf4j.version> 4 </properties> 5 <!-- log4j --> 6 <dependency> 7 <groupId>org.springframework</groupId&g

Log4j配置为何失效

昨天上线折腾了半天,发现日志始终不能正确打印到指定文件,反而Tomcat的catalina.out打印了业务日志,仔细检查线上log4j配置,未发现任何问题,console日志输入并没有打开.于是迅速使用上次上线包进行替换重新发布,发现问题解决. 考虑到本次上线新依赖了其他系统的jar包,检查该jar后发现,jar包中包含了Log4j.xml!! log4j为何选择了jar中的log4j.xml而不是自己的log4j.properties文件呢,原因就在log4j的LogManager类中 看段

#2014/7/24#常用log4j配置

常用log4j配置,一般可以采用两种方式,.properties和.xml,下面举两个简单的例子: 一.log4j.properties ### 设置org.zblog域对应的级别INFO,DEBUG,WARN,ERROR和输出地A1,A2 ## log4j.category.org.zblog=ERROR,A1 log4j.category.org.zblog=INFO,A2 log4j.appender.A1=org.apache.log4j.ConsoleAppender ### 设置输出

Log4j配置(转)

原文:http://www.blogjava.net/zJun/archive/2006/06/28/55511.html Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息.通过配置,可以创建出Log4J的运行环境. 1. 配置文件Log4J配置文件的基本格式如下: #配置根Loggerlog4j.rootLogger  =   [ level ]   ,  appenderName1

slf4j和log4j配置

在选用 slf4j-api-1.7.7.jar + slf4j-log4j12-1.7.7.jar + log4j-1.2.17.jar 时输出(前提是有相应的配置文件log4j.properties,放在根目录,一般是src文件夹下)到文件logs.log和errors.log 1 基本格式如下: #配置根Logger log4j.rootLogger = [ level ] , appenderName1 , appenderName2 , - #配置日志信息输出目的地Appender lo

log4j配置相对路径实现日志记录

从网上简单搜索了一下,发现有三种介绍的方法.总结在这里1. 解决的办法自然是想办法用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如: log4j.appender.logfile.File=${WORKDIR}/logs/app.log 其中“${WORKDIR}/”是个变量,会被System Property中的“WORKDIR”的值代替.这样,我们就可以在log4j加载配置文件之前,先用System.setProperty设置好根路径. 在 没有发现这个