首先我們定義一個可以在運行時動態的找出項目的路徑webapprootkey,這么做的原因是為了在后面配置log4j輸出文件路徑的時候能隨心配置。
1
2
3
4
|
<context-param> <param-name>webapprootkey</param-name> <param-value>amt.root</param-value> </context-param> |
然后要定義項目log配置文件的路徑以及log4j監聽器
1
2
3
4
5
6
7
8
|
<context-param> <param-name>log4jconfiglocation</param-name> <param-value>classpath:conf/log4j.xml</param-value> </context-param> <!--定義log4j監聽器--> <listener> <listener- class >org.springframework.web.util.log4jconfiglistener</listener- class > </listener> |
這樣web.xml文件的配置完畢,然后就是log配置文件的具體配置文件:
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
|
<?xml version= "1.0" encoding= "utf-8" ?> <!doctype log4j:configuration system "log4j.dtd" > <log4j:configuration> <!-- 將日志信息輸出到控制臺 --> <appender name= "consoleappender" class = "org.apache.log4j.consoleappender" > <!-- 設置日志輸出的樣式 --> <layout class = "org.apache.log4j.patternlayout" > <!-- 設置日志輸出的格式 --> <param name= "conversionpattern" value= "[%d{yyyy-mm-dd hh:mm:ss:sss}] [%-5p] [method:%l]%n%m%n%n" /> </layout> <!--過濾器設置輸出的級別--> <filter class = "org.apache.log4j.varia.levelrangefilter" > <!-- 設置日志輸出的最小級別 --> <param name= "levelmin" value= "info" /> <!-- 設置日志輸出的最大級別 --> <param name= "levelmax" value= "error" /> <!-- 設置日志輸出的xxx,默認是 false --> <param name= "acceptonmatch" value= "true" /> </filter> </appender> <!-- 將日志信息輸出到文件,可以配置多久產生一個新的日志信息文件 --> <appender name= "rollingfile" class = "org.apache.log4j.dailyrollingfileappender" > <!-- 設置日志信息輸出文件全路徑名 --> <param name= "file" value= "${amt.root}/logs/spdbdata.log" /> <!-- 設置日志每小時回滾一次,即產生一個新的日志文件 --> <param name= "datepattern" value= "'_'yyyy-mm-dd-hh'.log'" /> <!-- 設置日志輸出的樣式 --> <layout class = "org.apache.log4j.patternlayout" > <!-- 設置日志輸出的格式 --> <param name= "conversionpattern" value= "[%d{yyyy-mm-dd hh:mm:ss:sss}] [%-5p] [method:%l]%n%m%n%n" /> </layout> </appender> <!-- 注意: 1 :當additivity= "false" 時,root中的配置就失靈了,不遵循缺省的繼承機制 2 :logger中的name非常重要,它代表記錄器的包的形式,有一定的包含關系,試驗表明 2 - 1 :當定義的logger的name同名時,只有最后的那一個才能正確的打印日志 2 - 2 :當對應的logger含有包含關系時,比如:name=test.log4j.test8 和 name=test.log4j.test8.uselog4j,則 2 - 1 的情況是一樣的 2 - 3 :logger的name表示所有的包含在此名的所有記錄器都遵循同樣的配置,name的值中的包含關系是指記錄器的名稱喲!注意啦! 3 :logger中定義的level和appender中的filter定義的level的區間取交集 4 :如果appender中的filter定義的 levelmin > levelmax ,則打印不出日志信息 --> <!--指定logger的設置,additivity指示是否遵循缺省的繼承機制 --> <logger name= "test.log4j.test8.uselog4j_" additivity= "false" > <level value = "error" /> <appender-ref ref= "rollingfile" /> </logger> <!-- 根logger的設置--> <root> <level value = "info" /> <appender-ref ref= "consoleappender" /> <appender-ref ref= "rollingfile" /> </root> </log4j:configuration> |
項目結構如下:
一切準備就緒之后,項目一旦啟動你就能在你規定的輸出位置找到你每天或者每個小時的日志文件,log配置文件還可以進行拓展配置每個文件的大小以及文件出錯時的回滾事宜,這里不做贅述。
以上這篇基于web項目log日志指定輸出文件位置配置方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/Smile_Miracle/article/details/76849830