Log4j
是Apache
的一个开源项目,它允许开发者以任意间隔输出日志信息。Log4j
主要由三大类组件构成: 1
)Logger-
负责输出日志信息,并能够对日志信息进行分类筛选,即决定哪些日志信息应该被输出,哪些该被忽略。Loggers
组件输出日志信息时分为5
个级别:DEBUG
、INFO
、WARN
、ERROR
、FATAL
。这五个级别的顺序是:DEBUG<INFO<WARN<ERROR<FATAL
。如果设置某个Logger
组件的级别是P
,则只有级别比P
高的日志信息才能输出。Logger
是有继承关系的,最上层是rootLogger
,定义的其他Logger
都会继承rootLogger
。 2
)Appender-
定义了日志输出目的地,指定日志信息应该被输出到什么地方。输出的目的地可以是控制台、文件或网络设备。 3
)Layout-
通过在Appender
的后面附加Layout
来实现格式化输出。 一个Logger
可以有多个Appender
,每个Appender
对应一个Layout
。 Logger
的定义格式:log4j.[loggername]=[level],appenderName,appenderName,…
这里level
是指Logger
的优先级,appenderName
是日志信息的输出地,可以同时定义多个输出地。 log4j.appender.appenderName = fully.qualified.name.of.appender.class
// "fully.qualified.name.of.appender.class"
可以指定下面五个目的地中的一个: | |
org.apache.log4j.ConsoleAppender | |
org.apache.log4j.FileAppender | |
org.apache.log4j.DailyRollingFileAppender | |
org.apache.log4j.RollingFileAppender | |
org.apache.log4j. WriterAppender | |
-Threshold=WARN:
指定日志消息的输出最低层次。 -ImmediateFlush=true:
默认值是true,
意谓着所有的消息都会被立即输出。 -Target=System.err
:默认情况下是:System.out,
指定输出控制台。 -Threshold=WARN:
指定日志消息的输出最低层次。 -ImmediateFlush=true:
默认值是true,
意谓着所有的消息都会被立即输出。 -File=mylog.txt:
指定消息输出到mylog.txt
文件。 - Append=false:
默认值是true,
即将消息增加到指定文件中,false
指将消息覆盖指定的文件内容。 3
)DailyRollingFileAppender
选项 -Threshold=WARN:
指定日志消息的输出最低层次。 -ImmediateFlush=true:
默认值是true,
意谓着所有的消息都会被立即输出。 -File=mylog.txt:
指定消息输出到mylog.txt
文件。 -Append=false:
默认值是true,
即将消息增加到指定文件中,false
指将消息覆盖指定的文件内容。 -DatePattern='.'yyyy-ww:
每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下: 4
)RollingFileAppender
选项 -Threshold=WARN:
指定日志消息的输出最低层次。 -ImmediateFlush=true:
默认值是true,
意谓着所有的消息都会被立即输出。 -File=mylog.txt:
指定消息输出到mylog.txt
文件。 - Append=false:
默认值是true,
即将消息增加到指定文件中,false
指将消息覆盖指定的文件内容。 -MaxFileSize=100KB:
后缀可以是KB, MB
或者是 GB.
在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1
文件。 -MaxBackupIndex=2:
指定可以产生的滚动文件的最大数。 部分一log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
//"fully.qualified.name.of.layout.class"
可以指定下面4
个格式中的一个: | |
org.apache.log4j.HTMLLayout | |
org.apache.log4j.PatternLayout | |
org.apache.log4j.SimpleLayout | |
org.apache.log4j.TTCCLayout | |
-LocationInfo=true:
默认值是false,
输出java
文件名称和行号。 -Title=my app file:
默认值是 Log4J Log Messages
。 - ConversionPattern=%m%n :
指定怎样格式化指定的消息。 -LocationInfo=true:
默认值是false,
输出java
文件和行号。 部分二 log4j.appender.A1.layout.ConversionPattern=
%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
这里需要说明的就是日志信息格式中几个符号所代表的含义: 2
)%p:
输出日志信息优先级,即DEBUG
,INFO
,WARN
,ERROR
,FATAL
。 3
)%d:
输出日志时间点的日期或时间,默认格式为ISO8601
,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS}
,输出类似:2002
年10
月18
日 22
:10
:28
,921
。 4
)%r:
输出自应用启动到输出该log
信息耗费的毫秒数。 5
)%c:
输出日志信息所属的类目,通常就是所在类的全名。 7
)%l:
输出日志事件的发生位置,相当于%C.%M(%F:%L)
的组合,
包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
。 8
)%x:
输出和当前线程相关联的NDC(
嵌套诊断环境),
尤其用到像java servlets
这样的多客户多线程的应用中。 10
)%F:
输出日志消息产生时所在的文件名称。 12
)%m:
输出代码中指定的消息,
产生的日志具体信息。 13
)%n:
输出一个回车换行符,Windows
平台为"\r\n"
,Unix
平台为"\n"
输出日志信息换行。 可以在%
与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如: 1)%20c
:指定输出category
的名称,最小的宽度是20
,如果category
的名称小于20
的话,默认的情况下右对齐。 2)%-20c:
指定输出category
的名称,最小的宽度是20
,如果category
的名称小于20
的话,"-"
号指定左对齐。 3)%.30c:
指定输出category
的名称,最大的宽度是30
,如果category
的名称大于30
的话,就会将左边多出的字符截掉,但小于30
的话也不会有空格。 4)%20.30c:
如果category
的名称小于20
就补空格,并且右对齐,如果其名称长于30
字符,就从左边交远销出的字符截掉。 本文转自zhangjunhd51CTO博客,原文链接:http://blog.51cto.com/zhangjunhd/21014,如需转载请自行联系原作者