如何打印Log4j java sql logger

如何打印Log4j java sql logger,java,log4j,log4jdbc,Java,Log4j,Log4jdbc,我想对java和sql使用log4j。我想打印java和sql日志,而不在我的类中使用logger.debuglog4j logger 下面是使用的类和log4j属性 package com.log4j; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import org.apache.log4j.Logger; import org.apache.lo

我想对java和sql使用log4j。我想打印java和sql日志,而不在我的类中使用logger.debuglog4j logger

下面是使用的类和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
请告知

任何帮助都将不胜感激


谢谢

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

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

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

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

System.out.println("Exception: " + ex.getMessage() + "");

就像你创建了一个从未使用过的变量那么为什么要创建它呢?如果你使用

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

System.out.println("Exception: " + ex.getMessage() + "");
如果要打印发送到数据库的SQL,可能需要使用。这起代理作用:

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

注释

*图像是从

获取的。如果要打印发送到数据库的SQL,可能需要使用。这起代理作用:

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

注释


*图像是从

中获得的,说您想使用log4j而不使用logger.debug就像说您想使用枪而不使用任何子弹。我想还有很多其他方法可以使用logger.trace和logger.info进行日志记录,但您还没有明确说明不使用调试的原因。将System.out.println也放在这里就像是添加了一个弓箭。请解释为什么不想使用logger.debugSQL语句,必须在不使用logger.debug的情况下,通过在log4j属性中启用它,按如下方式打印语句。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=debugdown是sql日志,DEBUG[main]-{conn-100003}Connection DEBUG[main]-{conn-100003}准备语句:插入用户信息ID、名称、电子邮件、密码,状态值?、?、?、?、?,?,?,?,?;DEBUG[main]{pstm-100004}执行语句:插入USERINFO ID、名称、电子邮件、密码、状态值?、?、?、?、?,?,?,?,?;说您想在不使用logger.debug的情况下使用log4j就像说您想在不使用任何子弹的情况下使用枪一样。我想还有很多其他方法可以使用logger.trace和logger.info进行日志记录,但您还没有明确说明不使用调试的原因。将System.out.println也放在这里就像是添加了一个弓箭。请解释为什么不想使用logger.debugSQL语句,必须在不使用logger.debug的情况下,通过在log4j属性中启用它,按如下方式打印语句。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=debugdown是sql日志,DEBUG[main]-{conn-100003}Connection DEBUG[main]-{conn-100003}准备语句:插入用户信息ID、名称、电子邮件、密码,状态值?、?、?、?、?,?,?,?,?;DEBUG[main]{pstm-100004}执行语句:插入USERINFO ID、名称、电子邮件、密码、状态值?、?、?、?、?,?,?,?,?;SQL语句必须像下面这样打印,而不使用logger.debug并在log4j属性中启用它。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=debugdown是sql日志,DEBUG[main]-{conn-100003}Connection DEBUG[main]-{conn-100003}准备语句:插入用户信息ID、名称、电子邮件、密码,状态值?、?、?、?、?,?,?,?,?;DEBUG[main]{pstm-100004}执行语句:插入USERINFO ID、名称、电子邮件、密码、状态值?、?、?、?、?,?,?,?,?;jdbc库将以任何方式打印此日志,您不必为此执行任何操作。SQL语句必须按如下方式打印,而无需使用logger.debug并在log4j属性中启用它。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以下是sql日志,DEBUG[main]-{conn-100003}Connection DEBUG[main]-{conn-100003}准备语句:插入用户信息
ID、名称、电子邮件、密码、状态值?、?、?、?、?,?,?,?,?;DEBUG[main]{pstm-100004}执行语句:插入USERINFO ID、名称、电子邮件、密码、状态值?、?、?、?、?,?,?,?,?;jdbc库将以任何方式打印此日志,您不必为此做任何事情。