Как распечатать Log4j Java SQL Server Logger

Я хочу использовать log4j для Java и SQL. я хочу напечатать журналы Java и SQL без использования "logger.debug("log4j 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

Пожалуйста, порекомендуйте.

Любая помощь будет оценена

Спасибо

3 ответа

Решение

Как будто вы создали переменную, которая никогда не используется, тогда зачем ее создавать, было бы лучше, если бы вы использовали

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

вместо

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

Если java.sql имеет интерфейс логгера, он, вероятно, будет java.util.logging, а не LOG4J или SLF4J. Я посмотрел на некоторые из классов java.sql.* И похоже, что они вообще не регистрируются. Ваша схема сработала бы, если бы какой-либо из этих классов использовал журналирование 4J, но они не работают, поэтому вам просто нужно поместить регистрацию в ваш код.

Если вы хотите напечатать SQL, отправленный в базу данных, вы можете использовать log4jdbc-log4j2. Это действует как прокси:

полномочие

Если вы используете log4j.jar, вам потребуется добавить slf4j-api.jar а также slf4j-log4j12.jar,

конфигурация log4jdbc


Заметки

* Изображения были получены из JPA - трассировщик требует SQL avec Log4jdbc

Другие вопросы по тегам