Servlet日志输出Log4j配置
转自: http://musicbox95351.iteye.com/blog/868526
比如项目为一个UserServlet,主要分三步
1 日志输出文件log4j.xml的配置。
2 加载日志配置文件的servlet类。
3 web.xml配置
第一步:
比如项目为一个UserServlet,主要分三步
1 日志输出文件log4j.xml的配置。
2 加载日志配置文件的servlet类。
3 web.xml配置
第一步:
1
<?
xml version
=
"
1.0
"
encoding
=
"
UTF-8
"
?>
2
<!
DOCTYPE log4j:configuration SYSTEM
"
log4j.dtd
"
>
3
<
log4j:configuration xmlns:log4j
=
"
http://jakarta.apache.org/log4j/
"
>
4
<
appender name
=
"
infoChannel
"
5
class
=
"
org.apache.log4j.RollingFileAppender
"
>
6
<!--
设置通道file和输出方式:org.apache.log4j.RollingFileAppender
-->
7
<
param name
=
"
File
"
value
=
"
${catalina.home}/logs/tourist_guide_system_server.log
"
/><!--
设置File参数:日志输出文件名
-->
8
<
param name
=
"
Append
"
value
=
"
true
"
/><!--
设置是否在重新启动服务时,在原有日志的基础添加新日志
-->
9
<
param name
=
"
MaxBackupIndex
"
value
=
"
10
"
/>
10
<
param name
=
"
MaxFileSize
"
value
=
"
10KB
"
/>
11
<
layout
class
=
"
org.apache.log4j.PatternLayout
"
>
12
<
param name
=
"
ConversionPattern
"
value
=
"
%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
"
/><!--
设置输出文件项目和格式
-->
13
</
layout
>
14
<
filter
class
=
"
org.apache.log4j.varia.LevelRangeFilter
"
>
15
<
param name
=
"
LevelMin
"
value
=
"
INFO
"
/><!--
设置将INFO级别的日志通过该通道输出
-->
16
<
param name
=
"
LevelMax
"
value
=
"
INFO
"
/>
17
</
filter
>
18
</
appender
>
19
<
appender name
=
"
debugChannel
"
20
class
=
"
org.apache.log4j.RollingFileAppender
"
>
21
<!--
设置通道file和输出方式:org.apache.log4j.RollingFileAppender
-->
22
<
param name
=
"
File
"
value
=
"
${catalina.home}/logs/testdebug.log
"
/><!--
设置File参数:日志输出文件名
-->
23
<
param name
=
"
Append
"
value
=
"
true
"
/><!--
设置是否在重新启动服务时,在原有日志的基础添加新日志
-->
24
<
param name
=
"
MaxBackupIndex
"
value
=
"
10
"
/>
25
<
param name
=
"
MaxFileSize
"
value
=
"
10KB
"
/>
26
<
layout
class
=
"
org.apache.log4j.PatternLayout
"
>
27
<
param name
=
"
ConversionPattern
"
value
=
"
%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
"
/><!--
设置输出文件项目和格式
-->
28
</
layout
>
29
<
filter
class
=
"
org.apache.log4j.varia.LevelRangeFilter
"
>
30
<
param name
=
"
LevelMin
"
value
=
"
DEBUG
"
/>
31
<
param name
=
"
LevelMax
"
value
=
"
DEBUG
"
/>
32
</
filter
>
33
</
appender
>
34
<
appender name
=
"
STDOUT
"
class
=
"
org.apache.log4j.ConsoleAppender
"
>
35
<!--
设置监视器输出方式
-->
36
<
layout
class
=
"
org.apache.log4j.PatternLayout
"
>
37
<
param name
=
"
ConversionPattern
"
38
value
=
"
%-4r [%t] %-5p %c %x - %m%n
"
/>
39
</
layout
>
40
<!--
滤镜设置输出的级别
-->
41
<
filter
class
=
"
org.apache.log4j.varia.LevelRangeFilter
"
>
42
<
param name
=
"
levelMin
"
value
=
"
info
"
/>
43
<
param name
=
"
levelMax
"
value
=
"
info
"
/>
44
<
param name
=
"
AcceptOnMatch
"
value
=
"
true
"
/>
45
</
filter
>
46
</
appender
>
47![]()
48
<
root
>
49
<!--
设置输出的级别大于等于DEGUG priority value
=
"
DEBUG
"
/
-->
50
<!--
设置输出的级别
-->
51
<
priority value
=
"
INFO
"
/>
52
<!--
设置接收所有输出的通道
-->
53
<
appender
-
ref ref
=
"
debugChannel
"
/>
54
<
appender
-
ref ref
=
"
infoChannel
"
/><!--
与前面的通道id相对应
-->
55
<
appender
-
ref ref
=
"
STDOUT
"
/>
56
</
root
>
57![]()
58
</
log4j:configuration
>
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
第二步:
1
2
import
java.io.IOException;
3![]()
4
import
javax.servlet.ServletException;
5
import
javax.servlet.http.HttpServlet;
6
import
javax.servlet.http.HttpServletRequest;
7
import
javax.servlet.http.HttpServletResponse;
8![]()
9
import
org.apache.log4j.xml.DOMConfigurator;
10
import
org.slf4j.Logger;
11
import
org.slf4j.LoggerFactory;
12![]()
13![]()
public
class
UserServlet
extends
HttpServlet
{
14
private static final Logger log = LoggerFactory.getLogger(UserServlet.class);
15![]()
public UserServlet()
{}
16
17![]()
public void init() throws ServletException
{
18
log.info("Initializing, My MyActionServlet init this System's Const Variable");
19
String prefix = this.getServletConfig().getServletContext().getRealPath("/");//读取项目的路径
20
String file = this.getServletConfig().getInitParameter("log4j");//读取log4j相对路径
21
String filePath = prefix + file;
22
DOMConfigurator.configure(filePath);//加载.xml文件
23
log.info("Initializing, end My Init");
24
super.init();//此方法不能省,ActionServlet覆盖了的此方法中有很多重要操作
25
}
26
}
2
3
4
5
6
7
8
9
10
11
12
13
![](http://img.e-com-net.com/image/product/d3c975ab092b4b77b3c90271c80dcc88.gif)
14
15
![](http://img.e-com-net.com/image/product/d3c975ab092b4b77b3c90271c80dcc88.gif)
16
17
![](http://img.e-com-net.com/image/product/d3c975ab092b4b77b3c90271c80dcc88.gif)
18
19
20
21
22
23
24
25
26
第三步: web.xml文件中增加servlet配置
1
<
servlet
>
2
<
servlet
-
name
>
userServlet
</
servlet
-
name
>
3
<
servlet
-
class
>
com.richhouse.servlet.UserServlet
</
servlet
-
class
>
4
<
init
-
param
>
5
<
param
-
name
>
log4j
</
param
-
name
>
6
<!--
这里标出了位置
-->
7
<
param
-
value
>/
WEB
-
INF
/
log4j.xml
</
param
-
value
>
8
</
init
-
param
>
9
<
load
-
on
-
startup
>
1
</
load
-
on
-
startup
>
10
</
servlet
>
11
<
servlet
-
mapping
>
12
<
servlet
-
name
>
userServlet
</
servlet
-
name
>
13
<
url
-
pattern
>/
userServlet
</
url
-
pattern
>
14
</
servlet
-
mapping
>
2
3
4
5
6
7
8
9
10
11
12
13
14