2017-12-15 4 views
-2

私は春とロギングが初めてです。春 - ログバックキャッチログイベント

私の目的は、それがその後、MySQL DBにマッピングされますLogbackロガーe.g logger.name/logger.level/logger.message
のデータを含むカスタムリポジトリを作成することです。

問題は、ロギングイベントをキャッチする方法がわかりません。 LoggingEvent(ILoggingEvent)をインスタンス化しようとしました。しかし、これは常に私を返します"null"

カスタムの名前付きテーブル/属性を使用してカスタムMySQL-DBを作成しているので、標準"Spring-logback-way"を使用しません。

実際のloggingEventを捕捉するために使用するインタフェース/クラスはどれですか?

答えて

0

手順1:まず、log4j.jarをプロジェクトに組み込む必要があります。怒鳴るような

step 2.Configure JDBCAppender in log4j.properties file as bellow to store 
     logging in database. 

log4j.properties: 

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

    # Define the file appender 
    log4j.appender.sql=org.apache.log4j.jdbc.JDBCAppender 
    log4j.appender.sql.URL=jdbc:mysql://localhost/test 
    # Set Database Driver 
    log4j.appender.sql.driver=com.mysql.jdbc.Driver 
    # Set database user name and password 
    log4j.appender.sql.user=root 
    log4j.appender.sql.password=password 
    # Set the SQL statement to be executed. 
    log4j.appender.sql.sql=INSERT INTO LOGS VALUES ('%x', now() 
     ,'%C','%p','%m') 
    # Define the xml layout for file appender 
    log4j.appender.sql.layout=org.apache.log4j.PatternLayout 

Step 3: Log4jJDBCExample to configure log4j and ites priority level message 

import org.apache.log4j.Logger; 
import org.apache.log4j.PropertyConfigurator; 

public class Log4jJDBCExample 
{ 
    static Logger log = Logger.getLogger(Log4jJDBCExample.class); 

    public static void main(String[] args) 
    { 
     PropertyConfigurator.configure("log4j.properties"); 

     log.debug("Sample debug message"); 
     log.info("Sample info message"); 
     log.error("Sample error message"); 
     log.fatal("Sample fatal message"); 
    } 
} 


Step 4: Create the table in database and test the application 

    Create the database table LOGS, in schema test. 

    CREATE TABLE LOGS 
    (
     USER_ID VARCHAR(20) NOT NULL, 
     DATED DATETIME NOT NULL, 
     LOGGER VARCHAR(50) NOT NULL, 
     LEVEL VARCHAR(10) NOT NULL, 
     MESSAGE VARCHAR(1000) NOT NULL 
    ); 

Explination: 

    log4j.appender.sql.sql=INSERT INTO LOGS VALUES ('%x', now() ,'%C','%p','%m') 

    Here now()--> inserts currentdate 
      %c--> Class Name 
      %p--> Priority (level) 
      %m--> Message 

結果: enter image description here

+0

これは私がちょうどLogback + SLF4J実装で、探しています正確に何であります! – DerCaptain