2009-09-01 7 views

Répondre

30

Si vous recherchez un programme d'ajout de base de données qui fonctionne non seulement mais qui prend également en charge le regroupement de connexions, maintenus et correctement documentés, que d'envisager de DBAppender de logback. Ironiquement, l'avertissement dans javadocs concernant la suppression de JDBCAppender dans les futures versions de log4j a été écrit par moi.

+6

Cette réponse est-elle toujours valide après 3 ans ou existe-t-il un autre cadre de journalisation de base de données? – Rachel

+0

Je peux confirmer que c'est valide, je viens d'utiliser JDBCAppender récemment. – Vincent

+0

@Vincent J'identifie l'objet pojo dans le journal via JDBCAppender. Je voudrais insérer la valeur différente d'objet de Pojo dans la base de données par le journal. Comment faire? Merci. – Kumar

11

Vous pouvez utiliser un appender alternative, mais en réalité, Log4j 1.2 sera disponible et standard pendant longtemps. Ils ont développé DBAppender dans le cadre de leurs compagnons de récepteurs, ce qui n'est pas officiellement publié, mais vous pouvez télécharger le code source et aller de votre propre côté. À moins que le problème de ne pas enregistrer les exceptions vous dérange, JDBCAppender est très bien. Toute nouvelle mise à niveau vers la version 2.0 va être plus radicale que de simplement changer JDBCAppender (si 2.0 arrive), donc je ne m'inquiéterais pas de l'utiliser, malgré l'avertissement. Ils n'ont clairement pas de feuille de route ou d'échéancier pour l'introduction d'une nouvelle version, et la version 1.2.15 a été publiée en 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 
Questions connexes