Log4j 配置详解

来源:互联网 发布:psg1知乎 编辑:程序博客网 时间:2024/06/05 16:43

       十一假期之后的第一天班,没什么状态,于是乎总结一下Log4j的用法,基于Log4j 1.2.7版本,如有疏漏还请大家指正!

更详细的说明参见 Log4j官网:http://logging.apache.org/log4j/1.2/

一 log4j 的配置文件 
    Log4j支持两种配置文件格式,一种是XML 格式的文件,一种是Java properties文件 log4j.properties 文件。 

1.1 配置根 Logger 

Logger 负责处理日志记录的大部分操作。 
其语法为: 
log4j.rootLogger = [ level ] , appenderName, appenderName, … 
    其中, level 是日志记录的优先级,分为 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 ALL 或者自定义的级别。 Log4j 建议只使用四个级别,优先级从高到低分别是 ERROR 、 WARN 、 INFO 、 DEBUG 。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了 INFO 级别,只有等于及高于这个级别的才进行处理,则应用程序中所有 DEBUG 级别的日志信息将不被打印出来。 ALL: 打印所有的日志, OFF :关闭所有的日志输出。 appenderName 就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。 
1.2  Appender 
配置日志信息输出目的地 Appender 负责控制日志记录操作的输出。 
其语法为: 
log4j.appender.appenderName = fully.qualified.name.of.appender.class 
log4j.appender.appenderName.option1 = value1 
log4j.appender.appenderName.optionN = valueN 
其中, Log4j 提供的 appender 有以下几种: 
org.apache.log4j.ConsoleAppender (控制台), 
org.apache.log4j.FileAppender (文件), 
org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件), 
org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新的文件),可通过 log4j.appender.R.MaxFileSize=100KB 设置文件大小,还可通过 log4j.appender.R.MaxBackupIndex=1 设置为保存一个备份文件。 
org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方) 
例: 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
定义一个名为 stdout 的输出目的地, ConsoleAppender 为控制台。 
1.3 Layout 
其中, Log4j 提供的 layout 有以下几种: 
org.apache.log4j.HTMLLayout (以 HTML 表格形式布局), 
org.apache.log4j.PatternLayout (可以灵活地指定布局模式), 
org.apache.log4j.SimpleLayout (包含日志信息的级别和信息字符串), 
org.apache.log4j.TTCCLayout (包含日志产生的时间、线程、类别等等信息) 
1.4 格式化日志信息 
Log4j 可以指定不同的日志信息打印格式,打印参数如下: 
%m  输出代码中指定的消息 
%p   输出优先级,即 DEBUG , INFO , WARN , ERROR , FATAL 
%r    输出自应用启动到输出该 log 信息耗费的毫秒数 
%c   输出所属的类目,通常就是所在类的全名 
%t    输出产生该日志事件的线程名 
%n   输出一个回车换行符, Windows 平台为 “rn” , Unix 平台为 “n” 
%d   输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式,比如: %d{yyyy MMM dd HH:mm:ss,SSS} ,输出类似: 2014-10-08 11:34:27.501

%l    输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。 


具体可参考PatternLayout 


二 log4j示例配置文件

log4j.properties 需在src根目录下,如下图所示:



log4j.properties

log4j.rootLogger=info, stdout#Root Loggerlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=[%-5p %d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] %l [%m]%n#============== Logger D develop environmentlog4j.logger.devLog=info, stdout, Dlog4j.additivity.devLog = falselog4j.appender.D.Append = truelog4j.appender.D.Threshold = INFOlog4j.appender.D=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File=D:/logs/log4j-test-api.loglog4j.appender.D.DatePattern='.'yyyy-MM-ddlog4j.appender.D.layout=org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern=[%-5p %d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] %l [%m]%n#============== Logger P production environment logs log4j.logger.productionLog=error, stdout, Plog4j.additivity.productionLog = falselog4j.appender.P.Append = truelog4j.appender.P.Threshold = ERRORlog4j.appender.P=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.P.File=D:/logs/log4j-test-api.loglog4j.appender.D.DatePattern='.'yyyy-MM-ddlog4j.appender.P.layout=org.apache.log4j.PatternLayoutlog4j.appender.P.layout.ConversionPattern=[%-5p %d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] %l [%m]%n

在代码中使用

package com.ricky.java.junit;import org.apache.log4j.Logger;public class Log4jTest {static Logger mLogger = Logger.getLogger("devLog");/** * @param args */public static void main(String[] args) {mLogger.debug("aaa");mLogger.info("test");}}





0 0
原创粉丝点击