首先我们定义一个可以在运行时动态的找出项目的路径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