2017-12-15 3 views
-2

Ich bin neu in Spring und Logging.Spring - Logging catch Logging-Ereignisse

Mein Ziel ist es ein eigenes Repository mit den Daten der Logback Logger e.g logger.name/logger.level/logger.message
, die zu einem MySQL DB abgebildet werden dann zu erstellen.

Das Problem ist, ich weiß nicht, wie man die Logging-Ereignisse zu fangen. Ich habe versucht, LoggingEvent (ILogingEvent) zu instanziieren. Aber das gibt mir immer "null" zurück.

Ich möchte nicht die typische "Spring-logback-way" verwenden, weil ich eine benutzerdefinierte MySQL-DB mit benutzerdefinierten benannten Tabellen/Attribute erstellen.

Welche Schnittstelle/Klasse muss ich verwenden, um das eigentliche LoggingEvent abzufangen?

Antwort

0

Schritt 1: Zuerst müssen Sie log4j.jar in Ihr Projekt aufnehmen.

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 

Ergebnis wie unten: enter image description here

+0

Das ist genau das, was ich suche, nur mit einem Logback + SLF4J Umsetzung! – DerCaptain

Verwandte Themen