用log4j將日誌寫入數據庫

如下爲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

Java代碼   收藏代碼
  1. public class LoginUserAction extends Action {  
  2.     private UserDao userDAO;  
  3.     private static Logger log = Logger.getLogger(LoginUserAction.class);  
  4.     /** 
  5.      * 得到UserDAO的對象 
  6.      * @param userDAO 
  7.      */  
  8.     public void setUserDAO(UserDao userDAO) {  
  9.         this.userDAO = userDAO;  
  10.     }  
  11.     public ActionForward execute(ActionMapping mapping, ActionForm form,  
  12.             HttpServletRequest request, HttpServletResponse httpservletresponse)  
  13.             throws Exception {  
  14.         // 設置request的字符集  
  15.         request.setCharacterEncoding("utf-8");  
  16.           
  17.           
  18.         LoginUserForm loginform = (LoginUserForm) form;  
  19.        
  20.         log.warn("用戶:"+loginform.getUsername()+"登錄"+"    "+"IP:"+request.getRemoteAddr());  
  21.         //調用方法得到一個LoginUserForm  
  22.         loginform = (LoginUserForm)userDAO.getAccount(loginform);  
  23.         return mapping.findForward("success");  
  24.     }  
  25.       
  26. }  

 private static Logger log = Logger.getLogger(LoginUserAction.class);
log.warn("用戶:"+loginform.getUsername()+"登錄"+"    "+"IP:"+request.getRemoteAddr());
 

注意一下紅色的字,這兩行主要是與日誌關聯的,第一紅行是創建一個日誌對象,第二個紅行是要往數據庫中寫入的日誌。

在log4j.properties中的代碼:數據庫

Java代碼   收藏代碼
  1. log4j.rootLogger=WARN,DATABASE  
  2.   
  3. #直接使用log4j包中的文件  
  4. log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender  
  5. #與數據庫創建鏈接  
  6. log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test  
  7. log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver  
  8. log4j.appender.DATABASE.user=root  
  9. log4j.appender.DATABASE.password=icy  
  10. #指定要插入數據庫的格式,具體參數的格式看一開始給出的文檔  
  11. 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

相關文章
相關標籤/搜索