Log4j 1.2.7版本使用手册

Log4j核心对象由三部分组成:
- logger :负责采集日志信息
- appenders:负责将日志信息发布到不同地方,终端,数据库,文件
- layouts:负责将日志格式化为各种形式

支持对象
- Level对象,定义日志信息的粒度和优先级;OFF、DEBUG、INFO、ERROR、WAR
N、FATAL、ALL。
- Filter过滤对象,分析日志信息,进而决定该条日志是否被记录;一个 Appender 对象可对应多个 Filter 对象,当日志信息传给 Appender 对象时,与其关联的所有 Filter 对象需要判断是否将日志信息发布到目的地。
- LogManager 对象,对象日志管理框架。
- ObjectRenderer 对象,ObjectRenderer对象负责为传入日志框架的不同对象提供字符串形式的表示,Layout 对象使用该对象来准备 最终的日志信息。

配置日志信息输出目的地 Appender

Log4j 提供的 appender 有以下几种:
- 1.org.apache.log4j.ConsoleAppender (控制台),
- 2.org.apache.log4j.FileAppender (文件),
- 3.org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件),
- 4.org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个 新的文件)
- 5.org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)
 

配置日志信息的格式(布局),输出格式

Log4j 提供的 layout 有以 e 几种:
- 1.org.apache.log4j.HTMLLayout (以 HTML 表格形式布局),
- 2.org.apache.log4j.PatternLayout (可以灵活地指定布局模式),
- 3.org.apache.log4j.SimpleLayout (包含日志信息的级别和信息字符串),
- 4.org.apache.log4j.TTCCLayout (包含日志产生的时间、线程、类别等等信息)

下面是日志信息格式化所用的占位符,输出格式化例子:

#输出格式
#%m 输出代码中指定的消息
#%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
#%r 输出自应用启动到输出该log信息耗费的毫秒数
#%c 输出所属的类目,通常就是所在类的全名
#%t 输出产生该日志事件的线程名
#%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
#%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
#%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)

格式化例子:
log4j.appender.stdout.layout.ConversionPattern = [%-d{yyyy-MM-dd HH:mm:ss}]-[ %t:%r ]-[ %p ]-%m%n
输出:
[2017-07-20 23:13:10]-[ main:0 ]-[ DEBUG ]-debug msg

注意:

1.信息格式化的小知识

这些参数中间可能会参杂一些数字比如:%5p它的意思就是在输出此参数之前加入多少个空格,还有就是里面的“\”的作用是转义字符

log4j 1.2.17配置详解


# Log4j 1.2.17 版本的属性配置文件

### set log levels 设置根logger , 设置输出的日志级别为debug以上,定义了三个 appender:stdout, D, E ###
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{yyyy-MM-dd HH:mm:ss}]-[ %t:%r ]-[ %p ]-%m%n

### 错误输出到日志文件 ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
##  错误日志文件
log4j.appender.E.File = logs/error.log 
## 日志附加到文件末尾
log4j.appender.E.Append = true
log4j.appender.E.DatePattern='.'yyyy-MM-dd
 ##  只输出ERROR级别(优先级)以上的日志 ##
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
log4j.appender.E.Encoding=utf-8


### 正常输出到日志文件 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
## 正常日志文件 ,文件夹log在项目根目录下。
log4j.appender.D.File = logs/log.log 
log4j.appender.D.DatePattern='.'yyyy-MM-dd-a
log4j.appender.D.Append = true
## 输出debug以上的日志。
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 ] - [ %5p ]  %m%n
log4j.appender.D.Encoding=utf-8





## Mybatis 配置
log4j.logger.java.sql.Statement = debug    
log4j.logger.java.sql.PreparedStatement = debug    
log4j.logger.java.sql.ResultSet =debug   



## 设置项目自己Logger

优先级从小到高;只显示比大于等于当前级别的信息。
1. ALL
1. TRACE
1. DEBUG
1. INFO
1. WARN
1. ERROR
1. FATAL
1. OFF

公司日志配置文件:

#开发日志将在本地输出,并输出SQL

log4j.rootLogger=DEBUG,A1,DRF



## 输出到Console
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
# log4j.appender.A1.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n
log4j.appender.A1.layout.ConversionPattern=%d %5p [%F:%L] : %m%n

## 输出到文件
log4j.appender.DRF=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DRF.Threshold=INFO #指定日志消息的输出最低层次 
log4j.appender.DRF.DatePattern='.'yyyy-MM-dd
log4j.appender.DRF.File=logs/imodule-service-batch.log
log4j.appender.DRF.Append=true
log4j.appender.DRF.layout=org.apache.log4j.PatternLayout
log4j.appender.DRF.layout.ConversionPattern=[%-5p][%d{yyyyMMdd HH:mm:ss,SSS}][%C{1}:%L] %m%n



###输出SQL 
##所有com.ibatis 包下日志级别为debug
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG







DatePattern 指定生成日志的周期

在DailyRollingFileAppender中可以指定monthly(每月)、 weekly(每周)、daily(每天)、half-daily(每半天)、hourly(每小时)和minutely(每分钟)六个频度,这是通过为 DatePattern选项赋予不同的值来完成的。DatePattern选项的有效值为:

  • ‘.’yyyy-MM,对应monthly(每月)
  • ‘.’yyyy-ww,对应weekly(每周)
  • ‘.’yyyy-MM-dd,对应daily(每天)
  • ‘.’yyyy-MM-dd-a,对应half-daily(每半天)
  • ‘.’yyyy-MM-dd-HH,对应hourly(每小时)
  • ‘.’yyyy-MM-dd-HH-mm,对应minutely(每分钟)

网上给出的教程


### 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.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.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}  [ %l:%c:%t:%r ] - [ %p ]  %m%n  

Log4j 在程序中使用

  • 通过静态化方法获取到Logger类实例。
    • getRootLogger();返回没有名字的日志记录器
    • getLogger(Log4jSimpleTest.class); 返回指定名字的记录器
  • 读取配置文件( PropertyConfigurator.configure ( String configFilename) 可有可无)
      -
static {
        String relativePath = "log4j.properties";

        try {
            PropertyConfigurator.configure(ClassLoaderUtil
                    .getStream(relativePath));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

采集日志数据:

        Log4jSimpleTest.logger.trace("trace msg");
        Log4jSimpleTest.logger.debug("debug msg");
        Log4jSimpleTest.logger.info("info msg");
        Log4jSimpleTest.logger.warn("warn msg");
        Log4jSimpleTest.logger.error("error msg");
        Log4jSimpleTest.logger.fatal("fatal msg");

http://blog.csdn.net/qq_30175203/article/details/52084127

http://blog.csdn.net/tony168hongweigan/article/details/8537164

http://www.cnblogs.com/ITEagle/archive/2010/04/23/1718365.html

http://blog.csdn.net/anialy/article/details/8529188

http://www.cnblogs.com/alipayhutu/archive/2012/06/21/2558249.html

猜你喜欢

转载自blog.csdn.net/jq_ak47/article/details/75579458