如下爲log4j中的配置參數:java
%m 輸出代碼中指定的消息
%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 輸出日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數mysql
%L 輸出代碼中的行數;
%F 輸出代碼中的文件名;web
要注意大小寫
在Java工程下,日誌文件(log4j.properties)要放在src目錄下,在web工程中,日誌文件(log4j.properties)也要放在src根目錄下。
在Action中的代碼以下:sql
- public class LoginUserAction extends Action {
- private UserDao userDAO;
- private static Logger log = Logger.getLogger(LoginUserAction.class);
-
- public void setUserDAO(UserDao userDAO) {
- this.userDAO = userDAO;
- }
- public ActionForward execute(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse httpservletresponse)
- throws Exception {
-
- request.setCharacterEncoding("utf-8");
-
-
- LoginUserForm loginform = (LoginUserForm) form;
-
- log.warn("用戶:"+loginform.getUsername()+"登錄"+" "+"IP:"+request.getRemoteAddr());
-
- loginform = (LoginUserForm)userDAO.getAccount(loginform);
- return mapping.findForward("success");
- }
-
- }
private static Logger log = Logger.getLogger(LoginUserAction.class);
log.warn("用戶:"+loginform.getUsername()+"登錄"+" "+"IP:"+request.getRemoteAddr());
注意一下紅色的字,這兩行主要是與日誌關聯的,第一紅行是創建一個日誌對象,第二個紅行是要往數據庫中寫入的日誌。
在log4j.properties中的代碼:數據庫
- log4j.rootLogger=WARN,DATABASE
-
- #直接使用log4j包中的文件
- log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
- #與數據庫創建鏈接
- log4j.appender.DATABASE.URL=jdbc:mysql:
- 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')
這樣以來就能夠向數據庫中寫入日誌了。apache
原文: http://blog.csdn.net/zhengbo0/article/details/38731617app