`
aokunsang
  • 浏览: 816035 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

项目中log4j.properties使用详解

    博客分类:
  • Java
阅读更多

     项目中大部分都会用到log4j.properties,确实很好使。但每次打开的时候,看到的是一大堆无字天书,看不懂,现在得空研究了一下,做一下分享,这里面汲取了javaEye中其他博友的帮助,再次O(∩_∩)O谢谢了、

 

注意:红色部分都为重要信息。


1.输出级别:
  ERROR、WARN、INFO、DEBUG、FATAL、OFF
ERROR:严重错误,主要是程序的错误
WARN:一般警告,比如:seesion丢失
INFO:一般要显示的信息,比如:登录
DEBUG:程序调试信息

 

log4j建议使用以上四种带注释的,即ERROR、WARN、INFO、DEBUG。


2.log4j的具体使用实例
log4j.rootCategory=INFO, CONSOLE, LOGFILE

#输出到控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=- %m%n

#每天生成一个日志文件
log4j.appender.LOGFILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOGFILE.DatePattern='.'yyyy-MM-dd
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.Threshold=WARN
log4j.appender.LOGFILE.File=logs/log
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout

#在日志中显示sql语句
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug
log4j.logger.java.sql.ResultSet=info
log4j.logger.javax.sql=info
log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug

首先:必须先在程序中导入两个jar包:commons-logging.jar,logging-log4j-1.2.9.jar.
$1 、定义输出目的地
   log4j.rootLogger或者log4j.rootCategory=[level],A1,B2,C3...
两者区别:在早期log4j版本中,org.apache.Category实现了记录器的功能,所谓人往高处走水往低处流,log4j也做的要越来越好,它使用logger扩展了Category类,因此目前这两个可以通用的。(个人建议使用log4j.rootLogger)
$2 、输出目的地的类型  log4j.appender.A1=以下类
  1、org.apache.log4j.ConsoleAppender           输出到控制台
  2、org.apache.log4j.DailyRollingFileAppender  每天生成一个日志文件
  3、org.apache.log4j.RollingFileAppender       文件达到制定的尺寸会产生一个新的文件
  4、org.apache.log4j.FileAppender              输出到文件
  5、org.apache.log4j.WriterAppender            把日志文件以流的形式发送到任意指定的地方\
  (imp)每种布局格式的常用属性详解
     $2-1(org.apache.log4j.ConsoleAppender)、
             log4j.appender.A1=org.apache.log4j.ConsoleAppender
       (1)log4j.appender.A1.Threshold=日志输出级别(如:ERROR,WARN等)  【指定消息的最低输出层次】
       (2)log4j.appender.A1.ImmediateFlush=true|false     默认为true    【表所有的信息都会立即示输出】
       (3)log4j.appender.A1.Target=System.err|System.out  默认为System.out          【指定输出到控制台】
     $2-2(org.apache.log4j.DailyRollingFileAppender)、
        log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
       (1)log4j.appender.A1.Threshold=日志输出级别(如:ERROR,WARN等)  【指定消息的最低输出层次】
       (2)log4j.appender.A1.ImmediateFlush=true|false     默认为true    【表所有的信息都会立即示输出】
       (3)log4j.appender.A1.File=a.log  (a.log为文件名) 【把日志信息输出到a.log文件,默认是从web服务器的根路径开始】
       (4)DatePattern='.'yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。也可以指定按月、周、天、时和分,

         对应的格式如下:
          1)'.'yyyy-MM: 每月
          2)'.'yyyy-ww: 每周
          3)'.'yyyy-MM-dd: 每天
          4)'.'yyyy-MM-dd-a: 每天a次
          5)'.'yyyy-MM-dd-HH: 每小时
          6)'.'yyyy-MM-dd-HH-mm: 每分钟

         $2-3(org.apache.log4j.RollingFileAppender)
              log4j.appender.A1=org.apache.log4j.RollingFileAppender
           (1)log4j.appender.A1.Threshold=日志输出级别(如:ERROR,WARN等)  【指定消息的最低输出层次】
       (2)log4j.appender.A1.ImmediateFlush=true|false     默认为true    【表所有的信息都会立即示输出】
       (3)log4j.appender.A1.File=a.log  (a.log为文件名) 【把日志信息输出到a.log文件,默认是从web服务器的根路径开始】
       (4)log4j.appender.A1.Append=true|false  默认为true  【true将消息增加到指定文件中,false指将消息覆盖指定的文件内容】
       (5)log4j.appender.A1.MaxFileSize=100KB 后缀可以为MB,GB。日志文件达到该大小时,将会自动滚动,将原来内容移动到a.log.1文件、
              (6)log4j.appender.A1.MaxBackupIndex=1|2|3....  指可以产生的滚动文件的最大数
         $2-4(org.apache.log4j.FileAppender)
              log4j.appender.A1=org.apache.log4j.FileAppender
           (1)log4j.appender.A1.Threshold=日志输出级别(如:ERROR,WARN等)  【指定消息的最低输出层次】
       (2)log4j.appender.A1.ImmediateFlush=true|false     默认为true    【表所有的信息都会立即示输出】
       (3)log4j.appender.A1.File=a.log  (a.log为文件名) 【把日志信息输出到a.log文件,默认是从web服务器的根路径开始;貌似还可以在启动web服务的时候指定文件根目录,这个没有试用过
$3 、配置日志输出的格式 log4j.appender.A1.layout=以下类
  1、org.apache.log4j.HTMLLayout        以html表格的形式布局
  2、org.apache.log4j.TTCCLayout        包含日志产生的时间、线程、类别等信息
  3、org.apache.log4j.PatternLayout     可以灵活指定布局格式(这个经常与log4j.appender.A1.layout.ConversionPattern=%-4r %d{yyyy MM dd HH:mm:ss} %m%n)
  4、org.apache.log4j.SimpleLayout      包含日志信息的级别和信息字符串
 
 使用灵活布局格式(PatternLayout),需要指定打印格式ConsersionPattern,具体参数如下:
  %p  日志的优先级,即:DEBUG,WARN,INFO,ERROR,FAULT
  %m  代码中指定的信息,产生的日志具体信息
  %n  换行
  %r  自应用启动到输出该log信息时耗费的毫秒数
  %c  日志信息所属的类的全名
  %d  输出日志的时间,默认为ISO8601 如:2010-04-07 15:19:21,640,也可以在后面指定格式,如:%d{yyyy-MM-dd HH:mm:ss,SSS}
  %L  输出代码中的行号 
  %F  产生日志的代码名称
  %t  产生日志信息的线程名
  %l  日志事件的位置,相当于%c.%m(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数,举例:Testlog4.main(TestLog4.java:10)。
 
  Ⅰ、 也可以在%和参数之间添加数字等,控制其最大、最小宽度以及对齐方式、
  %-20c:输出日志信息所在类的全名,该全名的最小宽度为20,“-”表示左对齐,默认为右对齐。类的全名小于20,就右补空格。
  %.20c:前面加个点,表示该类的全名的最大宽度为20,此时为右对齐,如果长度小于20,也不会左补空格;如果长度超过20,则截取左边超长的部分。写成(%-.20c效果一样),但是你不能写成%.-20c,控制台会原样输出,并且提示这样写有问题,但不影响程序运行、
  %20.50c:表示最小宽度为20,最大宽度为50,如果长度超过50,截取左边超出部分.(测试发现与%-20.50c效果一样,很是郁闷....)

 
 Ⅱ、 输出指定包或者指定类中的日志信息
  log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug    输出com.ibatis.common.jdbc.SimpleDataSource类中的日志信息
  log4j.logger.javax.sql=info     输出javax.sql包中的日志信息
  log4j.com.test=warn        你也可以指定你的项目中的包
  log4j.logger.org.springframework=DEBUG    输出spring的包里面的日志信息
 
  Ⅲ、 在项目的类中使用,需要导入commons-logging.jar
  然后private final static Log log = LogFactory.getLog(getClass());  参数为当前类的class
  在使用日志记录时,可以分等级的去记录,如:log.info("这是基本信息");log.error("这个错误信息");等等

 

------------------------------------------------------我是分割线----------------------------------------------------------------------------

log4j的相对路径配置:

 

 

1、需要在web.xml中添加一个监听器:

 <listener> 

<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 

</listener>

注意:这个监听器一定要放在前面,放在后面不起作用(具体不知道为什么)

2、需要把项目在tomcat中的路径注入到一个变量中

 

<!-- Log4j的配置(在同一容器中部署多个应用时,不能使用默认的webAppRootKey,必须指定唯一KEY,以免冲突) -->
<context-param>
 <param-name>webAppRootKey</param-name>
 <param-value>XXX.root</param-value>
</context-param>

 3、在log4j.properties中配置log4j.appender.R.File=${dxmppApi.root}/WEB-INF/xxx.log,你就可以tomcat的项目目录下找到xxx.log文件了。

 

 

再说一下,在项目中,如果log4j不是放在根目录下时候怎么加载它。在web.xml中添加如下代码:

 

<context-param>
	<param-name>log4jConfigLocation</param-name>
	<param-value>/WEB-INF/classes/config/log4j.properties</param-value>
	<!--  也可以这样写<param-value>classpath:config/log4j.properties</param-value> -->
</context-param>
分享到:
评论

相关推荐

    log4j.properties(完整版) log4j.properties(精简版)

    **日志框架Log4j详解** 在Java开发中,日志记录是一项不可或缺的功能,它能够帮助开发者追踪程序运行状态,定位错误,优化性能,并为后期维护提供重要信息。Log4j是Apache组织开发的一个强大的、灵活的日志记录框架...

    log4j.properties 的使用详解(含log4j.properties)

    《log4j.properties 使用详解》 在Java开发中,日志记录是一项不可或缺的工作,它能够帮助开发者追踪程序运行状态,定位错误,优化性能。而log4j作为一款强大的日志框架,广泛应用于各种Java项目中。本文将详细介绍...

    log4j.properties配置详解

    ### Log4j.properties配置详解 #### 一、Log4j配置文件基本概念 Log4j是一种广泛应用于Java应用程序的日志框架,它可以帮助开发者轻松管理应用程序的日志记录过程。Log4j支持多种配置方式,其中.properties文件...

    log4j.properties配置文件

    ### log4j.properties配置文件详解 #### 一、概述 `log4j.properties`是Apache Log4j框架中用于配置日志记录行为的核心文件之一。通过这个文件,开发者可以定义日志消息的输出方式(例如控制台或文件)、日志级别...

    Log4j.properties配置详解

    Loggers是Log4j中的关键组件,它们负责决定哪些信息应该被记录。Log4j提供了五个日志级别,从低到高分别是DEBUG、INFO、WARN、ERROR和FATAL。每个级别代表不同严重程度的问题,如DEBUG用于调试信息,而FATAL表示...

    log4j.properties配置详解.rtf

    log4j.properties配置详解,长期总结,以完善

    log4j与log4j.properties的配置.doc

    1. 在应用程序中使用 Log4j,需要将 Log4j 库文件(log4j-*.jar)添加到 CLASSPATH 变量中。 2. 新建一个配置文件 log4j.properties,放于 bin 文件下。 二、log4j.properties 配置文件 log4j.properties 配置文件...

    log4j使用jar包和log4j.properties配置文件

    在Java项目中使用Log4j,首先需要引入对应的jar包。在本例中,我们使用的是1.2.17版本的Log4j。这个版本的jar包包含了Log4j的核心类库,能够满足大部分基本的日志需求。对于IDEA和Eclipse这样的集成开发环境,你可以...

    log4j.properties详解与例子

    Log4j是一个广泛使用的日志记录框架,尤其在Java应用程序中。它允许开发者灵活地配置日志输出,以便根据需要捕获和管理不同级别的信息。本文将深入解析`log4j.properties`配置文件,以及如何配置Logger、Appender和...

    log4j.properties配置详解 使用教程

    接下来,我们看看如何在Java代码中使用log4j。 ```java package com.coderdream.log4j; import org.apache.log4j.Logger; public class HelloLog4j { private static Logger logger = Logger.getLogger(HelloLog...

    log4j.properties的简单运用

    二、`log4j.properties`配置详解 1. 设置全局日志级别: ``` log4j.rootLogger=DEBUG, Console, File ``` 这行代码设置了全局的日志级别为DEBUG,并将日志输出到Console和File两个Appender。 2. 配置Console ...

    log4j.properties配置详解.doc

    在实际应用中,通过修改`log4j.properties`或`log4j.xml`文件,可以轻松调整日志配置,满足不同环境和需求。例如,开发阶段可能需要DEBUG级别的详细日志,而生产环境中可能只需要ERROR级别的日志,这时只需更改配置...

    log4j.properties 全部应用

    本文将深入探讨log4j.properties配置文件的使用,以及如何在实际项目中充分利用其功能。参考博文链接:[https://fengshayage.iteye.com/blog/837664](https://fengshayage.iteye.com/blog/837664)。 **一、log4j...

    log4j配置实例(含配log4j.properties及jar包)

    - **引入依赖**: 首先需要添加Log4j的jar包,如`log4j-1.2.17.jar`到项目类路径中。 - **获取Logger**: 通过`Logger.getLogger(Class)`获取指定类的日志记录器。 - **日志方法调用**: 使用`debug()`, `info()`, `...

    log4j.properties配置实例

    Log4j.properties 配置实例详解 在 Java 应用程序中, Log4j 是一个非常流行的日志记录工具,它能够帮助开发者快速地记录和跟踪应用程序中的日志信息。log4j.properties 文件是 Log4j 的核心配置文件,它控制着 Log...

    log4j.properties参数详解word

    在log4j中,有ERROR、WARN、INFO、DEBUG四种级别。ERROR用于记录严重的错误信息,通常是程序无法正常运行的情况。WARN表示一般警告,例如会话丢失等非致命问题。INFO级别常用于常规信息的记录,如用户登录、登出等。...

    Log4j.properties详细说明

    Log4j.properties 配置详解 Log4j.properties 文件是 Log4j 框架的核心配置文件,用于设置记录器的级别、存放器和布局。通过配置,可以创建出 Log4J 的运行环境。下面是 Log4j.properties 文件的详细配置解释。 ...

Global site tag (gtag.js) - Google Analytics