1

我想将 log4j 用于 java 和 sql。我想在课堂上不使用“logger.debug("log4j logger")”来打印 java 和 sql 日志。

下面是使用的类和 log4j 属性

package com.log4j;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class LogTest {

public static void main(String[] args) throws Exception{
      final  Logger logger = Logger.getLogger(LogTest.class);
      PropertyConfigurator.configure("log4j.properties");
    try {
        Class.forName("oracle.jdbc.OracleDriver");
        Connection   conn = DriverManager.getConnection("XXX", "YYY", "ZZZ");          
       String inserQuery = "insert into table1 (name,id) values (?,?)";
       PreparedStatement prestat = conn.prepareStatement(inserQuery);
       prestat.setString(1, "Test");
       prestat.setString(2, "2");
       prestat.executeUpdate();
    }
    catch (Exception ex)
    {
        System.out.println("Exception: " + ex.getMessage() + "");

    }
}

}

以下是 log4j 属性

log4j.rootLogger=DEBUG,CA
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

请指教。

任何帮助将不胜感激

谢谢

4

3 回答 3

3

就像您创建了一个从未使用过的变量,那么为什么要创建它,如果您使用它会更好

logger.error("Exception: " + ex.getMessage() + "");

代替

System.out.println("Exception: " + ex.getMessage() + "");
于 2014-11-04T05:25:25.607 回答
1

如果 java.sql 有一个记录器接口,它可能是 java.util.logging 而不是 LOG4J 或 SLF4J。我查看了一些 java.sql.* 类,它们看起来好像根本没有日志记录。如果这些类中的任何一个使用 4J 日志记录,您的方案会有效,但它们不会,因此您只需将日志记录放入您的代码中。

于 2014-11-04T05:18:53.267 回答
0

如果要打印发送到数据库的SQL,可能需要使用log4jdbc-log4j2。这充当代理:

代理人

如果使用log4j.jar,则需要添加slf4j-api.jarslf4j-log4j12.jar

log4jdbc 配置


笔记

*图片来自JPA - Tracer les requêtes SQL avec Log4jdbc

于 2014-11-06T03:47:28.387 回答