log4j

来源:互联网 发布:吗288清零软件 编辑:程序博客网 时间:2024/05/16 19:29

把log4j.properties或是log4j.xml放在src根下(ClassPath路径中),这个文件在第一次调用log4j时会在类路径下找到该文件并加载.

最重要的一句话。 二十分钟搞定

log4j包含三个组件,分别是 Loggers(记录器)、Appenders(输出源)、Layouts(日志布局)。可分别简单理解为"日志类别"、"日志要输出的地方"和"日志以何种形式输出"。

 log4j的配置过程

在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件进行定义。定义步骤就是对Logger、Appender及Layout的分别使用。Log4j支持两种配置文件格式,一种是XML格式的文件,一种是java properties(key=value)【Java特性文件(键=值)】

下面我们介绍使用Java特性文件做为配置文件的方法

(1)配置根Logger,其语法为:

log4j.rootLogger = [level], appenderName1, appenderName2, …

level: 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。

appenderName: 就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。

例如:log4j.rootLogger=info,A1,B2,C3

(2)配置日志信息输出目的地,其语法为:

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(将日志信息以流格式发送到任意指定的地方)

ConsoleAppender选项

Threshold=WARN: 指定日志消息的输出最低层次。

ImmediateFlush=true: 默认值是true,意谓着所有的消息都会被立即输出。

Target=System.err:默认情况下是:System.out,指定输出控制台

FileAppender选项

Threshold=WARN: 指定日志消息的输出最低层次。

ImmediateFlush=true: 默认值是true,意谓着所有的消息都会被立即输出。

File=mylog.txt: 指定消息输出到mylog.txt文件。

Append=false: 默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

DailyRollingFileAppender选项

Threshold=WARN: 指定日志消息的输出最低层次。

ImmediateFlush=true: 默认值是true,意谓着所有的消息都会被立即输出。

File=mylog.txt: 指定消息输出到mylog.txt文件。

Append=false: 默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

DatePattern='.'yyyy-ww: 每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:

1)'.'yyyy-MM: 每月

2)'.'yyyy-ww: 每周

3)'.'yyyy-MM-dd: 每天

4)'.'yyyy-MM-dd-a: 每天两次

5)'.'yyyy-MM-dd-HH: 每小时

6)'.'yyyy-MM-dd-HH-mm: 每分钟

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.A1=org.apache.log4j.ConsoleAppender //这里指定了日志输出的第一个位置A1是控制台ConsoleAppender

(3)配置日志信息的格式,其语法为:

log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class //"fully.qualified.name.of.layout.class" 可以指定下面4个格式中的一个:

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

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

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

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

HTMLLayout选项

LocationInfo=true: 默认值是false,输出java文件名称和行号

Title=my app file: 默认值是 Log4J Log Messages.

PatternLayout选项

ConversionPattern=%m%n: 指定怎样格式化指定的消息。

实际应用: log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n

这里需要说明的就是日志信息格式中几个符号所代表的含义:

-X号: X信息输出时左对齐;

%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://blog.csdn.net/forwayfarer/article/details/2882929

我要说的就两点,一个是配置文件在运行时已经加载,二是可以在配置文件中设计某个包内java文件的日志级别。



# spring
log4j.logger.org.springframework=warn

0 0