在上篇文章給大家介紹了Java log4j詳細教程,本文給大家介紹java web log4j配置及web項目中配置log4j的技巧。具體詳情請看下文吧。
首先給大家提供log4j.jar下載:http://logging.apache.org/log4j/1.2/download.html
一、java web項目使用log4j
1.在web.xml文件中添加
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<!-- 配置log4j --> <context-param> <param-name>webAppRootKey</param-name> <param-value>com.hsinghsu.testSSH.webapp.root</param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/log4j.properties</param-value> </context-param> <context-param> <param-name>log4jRefreshInterval</param-name> <param-value> 600000 </param-value> </context-param> |
2.添加log4j.properties文件
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
|
log4j.rootCategory=INFO, stdout , R log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n log4j.appender.R=org.apache.log4j.DailyRollingFileAppender #log4j.appender.R.File=e:\\test\\avatar.log ## linux logs file path #log4j.appender.R.File=${com.hsinghsu.testSSH.webapp.root}/log/testlog.log ## Windows logs file path log4j.appender.R.File=D:\\eclipsespace\\testSSH\\WebContent\\WEB-INF\\testlog.log log4j.appender.R.layout=org.apache.log4j.PatternLayout #log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n #log4j.logger.com.neusoft=DEBUG #log4j.logger.com.opensymphony.oscache=ERROR log4j.logger.net.sf.navigator=INFO #log4j.logger.org.apache.commons=ERROR #log4j.logger.org.apache.struts=WARN #log4j.logger.org.displaytag=ERROR # log4j.logger.org.springframework=INFO # #log4j.logger.com.ibatis.db=WARN #log4j.logger.org.apache.velocity=FATAL #log4j.logger.com.canoo.webtest=WARN #log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN #log4j.logger.org.hibernate=DEBUG log4j.logger.org.hibernate=INFO #log4j.logger.org.logicalcobwebs=WARN |
3.使用log4j
例如在UserServiceImpl.java中使用log4j。
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
|
package com.hsinghsu.testSSH.service.impl; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.hsinghsu.testSSH.dao.UserDao; import com.hsinghsu.testSSH.model.User; import com.hsinghsu.testSSH.service.UserService; @Service (value = "userService" ) public class UserServiceImpl implements UserService{ @Autowired private UserDao userDao; // private final static Logger logger = Logger.getLogger(UserServiceImpl.class); private Logger logger = Logger.getLogger( this .getClass().getName()); public boolean login(String name, String password) { logger.info( "--UserServiceImpl login method name:" +name+ " password:" +password); User user = userDao.getUserByName(name); if (user!= null ) { if (password.equals(user.getPwd())) { return true ; } } return false ; } } |
二、log4j.properties參數詳解
log的級別分為debug(調試信息)、info(一般信息)、warn(警告信息)、error(錯誤信息)、fatal(致命錯誤信息)。
Log4j支持兩種配置文件格式,一種是XML格式的文件,一種是java屬性文件log4j.properties,下面以log4j.properties為例進行說明。
1、配置根Logger
Logger 負責處理日志記錄的大部分操作,其語法為:
log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
level : 是日志記錄的優先級,分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級別。
appenderName:就是指定日志信息輸出目的地的名稱。
如:log4j.rootLogger=info,A1,B2,C3
在早期log4j版本中,org.apache.Category實現了記錄器的功能,后使用logger擴展了Category類,因此log4j.rootCategory也可以使用。
如:log4j.rootCategory=INFO,A1,A2
2、配置日志信息輸出目的地 Appender
Appender 負責控制日志記錄操作的輸出,其語法為:
log4j.appender.appenderName = fully.qualified.name.of.appender.class
其中"fully.qualified.name.of.appender.class" 有以下幾種:
i.org.apache.log4j.ConsoleAppender(控制臺)
該選項有以下幾種:
Threshold=WARN:指定日志消息的輸出最低層次。
ImmediateFlush=true:默認值是true,意謂著所有的消息都會被立即輸出。
Target=System.err:默認情況下是:System.out,指定輸出控制臺
ii.org.apache.log4j.FileAppender(文件)
該選項有以下幾種:
Threshold=WARN:指定日志消息的輸出最低層次。
ImmediateFlush=true:默認值是true,意謂著所有的消息都會被立即輸出。
File=mylog.txt:指定消息輸出到mylog.txt文件。
Append=false:默認值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內容。
iii.org.apache.log4j.DailyRollingFileAppender(每天產生一個日志文件)
該選項有以下幾種:
Threshold=WARN:指定日志消息的輸出最低層次。
ImmediateFlush=true:默認值是true,意謂著所有的消息都會被立即輸出。
File=a.log:指定消息輸出到a.log文件,默認是從web服務器的根路徑開始。
Append=false:默認值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內容。
DatePattern='.'yyyy-ww:每周滾動一次文件,即每周產生一個新的文件。當然也可以指定按月、周、天、時和分。即對應的格式如下:
'.'yyyy-MM: 每月
'.'yyyy-ww: 每周
'.'yyyy-MM-dd: 每天
'.'yyyy-MM-dd-a: 每天兩次
'.'yyyy-MM-dd-HH: 每小時
'.'yyyy-MM-dd-HH-mm: 每分鐘
iv.org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件,可通過log4j.appender.appenderName.MaxFileSize=100KB設置文件大小)
該選項有以下幾種:
Threshold=WARN:指定日志消息的輸出最低層次。
ImmediateFlush=true:默認值是true,意謂著所有的消息都會被立即輸出。
File=a.log:指定消息輸出到a.log文件,默認是從web服務器的根路徑開始。
Append=false:默認值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內容。
MaxFileSize=100KB: 后綴可以是KB, MB 或者是 GB. 在日志文件到達該大小時,將會自動滾動,即將原來的內容移到mylog.log.1文件。
MaxBackupIndex=2:指定可以產生的滾動文件的最大數。
v.org.apache.log4j.WriterAppender(將日志信息以流格式發送到任意指定的地方)
例如:
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=D:\\eclipsespace\\testSSH\\WebContent\\WEB-INF\\testlog.log
3、配置日志信息的格式(布局)Layout
Layout 負責格式化Appender的輸出,其語法為:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
其中"fully.qualified.name.of.layout.class" 有以下幾種:
i.org.apache.log4j.HTMLLayout(以HTML表格形式布局)
該選項有以下幾種:
LocationInfo=true:默認值是false,輸出java文件名稱和行號
java" id="highlighter_293727">
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class QueryMyMeetingAction extends BaseFlowAction { /** * uid */ private static final long serialVersionUID = 7612831197603586815L; private static Log runLog = LogFactory.getLog( "runLogger" ); //運行日志 private static Log interfaceLog = LogFactory.getLog( "interfaceLogger" ); //接口日志 public String execute() throws Exception { interfaceLog.info( "====>>請求" ); runLog.info( "請求02" ); return super .execute(); } } |