最近在學(xué)習(xí)JBoss下配置Log4j,JBoss的各個(gè)版本的目錄、JBoss和Log4j集成的文件名每次都有變化,在JBoss5.x下配置了log4j.xml文件,但是配置沒(méi)有生效。如果你在項(xiàng)目中沒(méi)有指定使用的log4j的配置文件,最好使用JBoss自帶的配置文件,文件名為jboss-log4j.xml。該文件在Jboss容器的目錄為:${JBOSS_HOME}\server\default\conf下。下面就是基于log4j默認(rèn)配置的一些基本修改和注釋?zhuān)?/p>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
< span style = "font-size:12px;" ><? xml version = "1.0" encoding = "UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> < log4j:configuration xmlns:log4j = "http://jakarta.apache.org/log4j/" debug = "false" > < appender name = "FILE" class = "org.jboss.logging.appender.DailyRollingFileAppender" > < errorHandler class = "org.jboss.logging.util.OnlyOnceErrorHandler" /> < param name = "File" value = "${jboss.server.log.dir}/server.log" /> < param name = "Append" value = "true" /> <!-- Rollover at midnight each day --> < param name = "DatePattern" value = "'.'yyyy-MM-dd" /> <!-- Rollover at the top of each hour <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/> --> < layout class = "org.apache.log4j.PatternLayout" > <!-- The default pattern: Date Priority [Category] Message\n --> < param name = "ConversionPattern" value = "%d %-5p [%c] %m%n" /> <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/> --> </ layout > </ appender > < appender name = "ErrorFile" class = "org.jboss.logging.appender.DailyRollingFileAppender" > < errorHandler class = "org.jboss.logging.util.OnlyOnceErrorHandler" /> < param name = "File" value = "${jboss.server.log.dir}/error.log" /> < param name = "Threshold" value = "ERROR" /> < param name = "Append" value = "true" /> <!-- Rollover at midnight each day --> < param name = "DatePattern" value = "'.'yyyy-MM-dd" /> < layout class = "org.apache.log4j.PatternLayout" > <!-- The default pattern: Date Priority [Category] Message\n --> < param name = "ConversionPattern" value = "%d %-5p [%c] %m%n" /> <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/> --> </ layout > </ appender > < appender name = "CONSOLE" class = "org.apache.log4j.ConsoleAppender" > < errorHandler class = "org.jboss.logging.util.OnlyOnceErrorHandler" /> < param name = "Target" value = "System.out" /> < param name = "Threshold" value = "INFO" /> < layout class = "org.apache.log4j.PatternLayout" > <!-- The default pattern: Date Priority [Category] Message\n --> < param name = "ConversionPattern" value = "%d{ABSOLUTE} %-5p [%c{1}] %m%n" /> </ layout > </ appender > <!-- ================ --> <!-- Limit categories --> <!-- ================ --> < category name = "org.hibernate" > < priority value = "WARN" /> </ category > < category name = "org.hibernate.engine.loading.LoadContexts" > < priority value = "ERROR" /> </ category > < category name = "org.jboss" > < priority value = "INFO" /> </ category > <!-- Limit the org.apache category to INFO as its DEBUG is verbose --> < category name = "org.apache" > < priority value = "WARN" /> </ category > <!-- Limit the jacorb category to WARN as its INFO is verbose --> < category name = "jacorb" > < priority value = "WARN" /> </ category > <!-- Limit the org.jgroups category to WARN as its INFO is verbose --> < category name = "org.jgroups" > < priority value = "WARN" /> </ category > <!-- Limit the org.quartz category to INFO as its DEBUG is verbose --> < category name = "org.quartz" > < priority value = "INFO" /> </ category > <!-- Limit the JSR77 categories --> < category name = "org.jboss.management" > < priority value = "INFO" /> </ category > <!-- Limit the org.jboss.serial (jboss-serialization) to INFO as its DEBUG is verbose --> < category name = "org.jboss.serial" > < priority value = "INFO" /> </ category > < category name = "com.liang" > < priority value = "DEBUG" /> </ category > <!-- ======================= --> <!-- Setup the Root category --> <!-- ======================= --> < root > < appender-ref ref = "CONSOLE" /> < appender-ref ref = "FILE" /> < appender-ref ref = "ErrorFile" /> </ root > </ log4j:configuration ></ span > |
1. Log4j的幾種輸出方式
org.apache.log4j.ConsoleAppender(控制臺(tái))
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個(gè)日志文件)
org.apache.log4j.WriterAppender(將日志信息以流格式發(fā)送到任意指定位置)
2. 日志記錄的優(yōu)先級(jí)
優(yōu)先級(jí)從高到低:OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL。
log4j建議使用FATAL、ERROR、WARN、INFO、DEBUG。
你可以在<param name="Threshold" value="ERROR" />來(lái)配置level,Threshold是一個(gè)全局的過(guò)濾器,低于其設(shè)置的level將不會(huì)顯示出來(lái)。
3. 當(dāng)重啟Jboss服務(wù)之后是否保存之前的日志
<param name="Append" value="true" />,設(shè)置為true后,當(dāng)Jboos重啟后當(dāng)前的log不會(huì)消失,即在原有日志上增加新日志。
4. 日志輸出格式
%c 輸出所屬類(lèi)的全名,可在修改為 %c{num} ,num表示輸出的范圍
如:"org.apache.elathen.ClassName",%c{2}將輸出elathen.ClassName
%d 輸出日志時(shí)間其格式為 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}
%l 輸出日志事件發(fā)生位置,包括類(lèi)目名、發(fā)生線程,在代碼中的行數(shù)
%n 換行符
%m 輸出代碼指定信息,如info("message"),輸出message
%p 輸出優(yōu)先級(jí),即 FATAL ,ERROR 等
%r 輸出從啟動(dòng)到顯示該log信息所耗費(fèi)的毫秒數(shù)
%t 輸出產(chǎn)生該日志事件的線程名
5. 關(guān)于category的配置
category指定了以什么開(kāi)頭的包下的類(lèi)輸出的日志的級(jí)別。例如:
1
2
3
4
|
< category name = "com.liang" > < priority value = "DEBUG" /> < appender-ref ref = 'FILE' /> </ category > |
從上面可以看出,項(xiàng)目中以com.liang包開(kāi)頭的所有類(lèi)中,凡是DEBUG級(jí)別的日志可以輸出到FILE中。
注意:定義了一個(gè)appender-ref=FILE的引用,但是你如果也在root下配置了appender-ref=FILE的引用,會(huì)導(dǎo)致輸出到FILE的日志會(huì)重復(fù)。本人碰到過(guò)類(lèi)似的問(wèn)題。
總結(jié)
以上就是本文關(guān)于JBoss5.x下配置Log4j方法介紹的全部?jī)?nèi)容,希望對(duì)大家有所幫助。
原文鏈接:http://blog.csdn.net/jiuqiyuliang/article/details/42134199