以下爲log4j中的配置參數:
%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL
%r 輸出自應用啓動到輸出該log信息耗費的毫秒數
%t 輸出產生該日誌事件的線程名;
%n 輸出一個回車換行符,Windows平臺爲"\r\n",Unix平臺爲"\n"
%d 輸出日誌時間的日期或時間,默認格式爲ISO8601,也可以在其後指定格式,
比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2008年10月18日22:10:28:832
%c 輸出所屬的類目,通常就是所在類的全名,如“iNotes.Default”;
%l 輸出日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數
%F 輸出代碼中的文件名;
在Java工程下,日誌文件(log4j.properties)要放在src目錄下,在web工程中,日誌文件(log4j.properties)也要放在src根目錄下。
在Action中的代碼如下:
private UserDao userDAO;
private static Logger log = Logger.getLogger(LoginUserAction.class);
/**
* 獲得UserDAO的對象
* @param userDAO
*/
public void setUserDAO(UserDao userDAO) {
this.userDAO = userDAO;
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse httpservletresponse)
throws Exception {
// 設置request的字符集
request.setCharacterEncoding("utf-8");
LoginUserForm loginform = (LoginUserForm) form;
log.warn("用戶:"+loginform.getUsername()+"登陸"+" "+"IP:"+request.getRemoteAddr());
//調用方法獲得一個LoginUserForm
loginform = (LoginUserForm)userDAO.getAccount(loginform);
return mapping.findForward("success");
}
}
log.warn("用戶:"+loginform.getUsername()+"登陸"+" "+"IP:"+request.getRemoteAddr());
注意一下紅色的字,這兩行主要是與日誌關聯的,第一紅行是建立一個日誌對象,第二個紅行是要往數據庫中寫入的日誌。
在log4j.properties中的代碼:
#直接使用log4j包中的文件
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
#與數據庫建立連接
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=icy
#指定要插入數據庫的格式,具體參數的格式看一開始給出的文檔
log4j.appender.DATABASE.sql=INSERT INTO log4j (log_date, log_level, location, message) VALUES ('%d{ISO8601}', '%p', '%C,%L', '%m')
本文出自 “喬磊的博客 學習 進步” 博客,請務必保留此出處http://sucre.blog.51cto.com/1084905/357105