2009-09-01 87 views
17

數據庫自log4j的javadoc登錄使用log4j的

警告:這JDBCAppender的版本很可能會在未來被完全取代。不過,它不會記錄異常。

我應該怎麼做才能登錄到數據庫?

回答

30

放開。如果你正在尋找一個數據庫的appender不僅有效,而且還支持連接池,是維護和妥善記錄,比考慮logback的DBAppender

諷刺的是,在有關的log4j的未來版本中移除JDBCAppender的javadoc的警告是我寫的。

+6

此答案在3年後仍然有效,還有其他一些數據庫日誌框架可用嗎? – Rachel 2012-04-03 17:57:53

+0

我可以確認它是有效的,我最近剛剛使用JDBCAppender。 – Vincent 2014-02-07 01:07:26

+0

@Vincent我通過JDBCAppender在日誌中記錄pojo對象。我想通過日誌在數據庫中插入不同的pojo對象值。怎麼做?謝謝。 – Kumar 2014-09-12 10:45:49

11

您可以使用alternative附加目的地,但真正的Log4j 1.2將是各地的標準時間長。他們開發DBAppender作爲他們的接收器的同伴,這是沒有正式發佈的一部分,但是你可以下載源代碼,讓你自己去爲好。

除非不記錄異常的問題困擾你,JDBCAppender就好了。任何進一步升級到2.0都會比改變JDBCAppender(如果2.0發生)更激進,所以我不會擔心使用它,儘管有警告。他們顯然沒有一個堅實的路線圖或時間表,以引入新的版本,和1.2.15於2007年

0
**log4j.properties file** 

    # Define the root logger with appender file 
    log4j.rootLogger = DEBUG, DB 

    # Define the DB appender 
    log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender 

    # Set JDBC URL 
    log4j.appender.DB.URL=jdbc:mysql://localhost/log 

    # Set Database Driver 
    log4j.appender.DB.driver=com.mysql.jdbc.Driver 

    # Set database user name and password 
    log4j.appender.DB.user=root 
    log4j.appender.DB.password=root 

    # Set the SQL statement to be executed. 
    log4j.appender.DB.sql=INSERT INTO actionlg(user_id, dated, logger, level, message) values('%X{userId}',' %d{yyyy-MM-dd-HH-mm}','%C','%p','%m') 

    # Define the layout for file appender 
    log4j.appender.DB.layout=org.apache.log4j.PatternLayout 

    **Java Class** 
    Log4jExamples.java 
    import java.sql.*; 
    import java.io.*; 

    import org.apache.log4j.Logger; 
    import org.apache.log4j.MDC; 


    public class Log4jExample { 
      /* Get actual class name to be printed on */ 
      static Logger log = Logger.getLogger(Log4jExample.class.getName()); 
      public static void main(String[] args)throws IOException,SQLException{ 
       log.error("Error"); 
       MDC.put("userId", "1234"); 
      } 
    } 

    **libs required** 
    - mysql-connector-java-3.1.8-bin.jar 
    - log4j-1.2.17.jar