Log4j 基础使用

来源:互联网 发布:算法pdf 编辑:程序博客网 时间:2024/05/22 14:07
Log4j是JAVA中常用的日志记录工具
1log4j组成
log4j主要由三大组件组成,logger,appender和layouts。

基本语法
#根logger,指定其输出目的地为A1和filelog4j.rootLogger=DEBUG,A1,file#A1为控制台log4j.appender.A1=org.apache.log4j.ConsoleAppender#file为具体文件log4j.appender.file=org.apache.log4j.RollingFileAppender

2logger
logger是日志写出器,供程序员输出日志信息。
每个logger都可以配置一个或多个appender,每个appender代表一个日志的输出目的地。可以是控制台或是特定文件。

配置root Logger的语法为:

log4j.rootLogger=[priority],appenderName,appenderName,...­

配置自定义Logger组件的语法为:

log4j.logger.loggerName=[priority],appenderName,appenderName,...­

priority是日志级别,可以是OFFFATALERRORWARNINFODEBUGALL

其中,logger具有继承特性,未分配level的logger将会继承离他最近的父logger的appenders。可以通过设置logger的additive标志来设置该属性。ture表示会继承。
#loggerlog4j.logger.com.gwf.core=DEBUG,processEngineLog这样,在core包下的类中,进行private static Logger logger = Logger.getLogger(ProcessEngine.class);该logger会继承log4j.logger.com.gwf.core的log内容。
在代码中,
logger=Loger.getLogger(ProcessEngine.class);
含义是
加载一个logger,其名字是com.gwf.logger.ProcessEngine。在配置文件中没有定义该名称的logger,会自动继承processEngineLog的level和appender。

2appender
appender是log日志的输出目的地。
其语法为:
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1

log4j.appender.appenderName.optionN = valueN
appenderName为任意取值,其值可以是以下几种
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
例如:log4j.appender.stdout=org.apache.log4j.ConsoleAppender
就是定义一个名为stdout的输出目的地,ConsoleAppender为控制台。

3layout
layout是格式appender的输出。

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

此句为定义名为stdout的输出端的layout是哪种类型,可以是

org.apache.log4j.HTMLLayout(以HTML表格形式布局),

org.apache.log4j.PatternLayout(可以灵活地指定布局模式),

org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),

org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

当然,如果使用PatternLayout,可以灵活指定输出格式

log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n

[QC]是log信息的开头,可以为任意字符,例如项目简称。

%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,

%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},

       输出类似:2002年10月18日        22:10:28,921

%r: 输出自应用启动到输出该log信息耗费的毫秒数

%c: 输出日志信息所属的类目,通常就是所在类的全名

%t: 输出产生该日志事件的线程名

%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)

%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。

%%: 输出一个"%"字符

%F: 输出日志消息产生时所在的文件名称

%L: 输出代码中的行号

%m: 输出代码中指定的消息,产生的日志具体信息

%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字符,就从左边较远输出的字符截掉。



参考:

http://www.open-open.com/lib/view/open1337754346355.html

http://blog.csdn.net/evatian/article/details/8501517



0 0