如何为JDBCDriverLogging设置日志记录级别

时间:2010-05-26 14:38:20

标签: java logging jdbc

我正在尝试更改日志记录级别以停止显示数百万条:

<May 26, 2010 10:26:02 AM EDT> <Debug> <JDBCDriverLogging> <000000> <2336: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |                |> 

我尝试将其添加到我的java行:

-Djava.util.logging.config.file=/foo/bar/logging.properties

将此作为我的logging.properties文件:

handlers = java.util.logging.ConsoleHandler
.level = OFF
java.util.logging.ConsoleHandler.level = INFO

没有运气。我试过这个:

Logger logger = Logger.getLogger("com.microsoft.sqlserver.jdbc");
Handler handler = new ConsoleHandler();
handler.setLevel(Level.INFO);
logger.addHandler(handler);
logger.setLevel(Level.INFO);
logger.setUseParentHandlers(false);

没有运气。我已经四处寻找,所有的想法都集中在这两个选项中的一个,所以我必须做错其他的事情

我正在使用jtds-1.2.2.jar。

感谢您的任何建议。

2 个答案:

答案 0 :(得分:1)

net.sourceforge.jtds.util.Logger.setLogWriter(new NullPrintWriter()) 

禁用日志记录驱动程序。 NullPrintWriter可以在Apache Commons IO包中找到,也可以通过扩展PrintStream并替换没有操作的print操作来实现。

答案 1 :(得分:1)

我怀疑你现在需要这个,但是我想到了一个问题,试图找到一种激活jTDS记录的方法,与你需要的相反。

我能找到让日志工作正常工作的唯一方法是对此问题中的Logger进行硬编码:Log4J: How do I redirect an OutputStream or Writer to logger's writer(s)?并将其传递给jTDS的Logger.setLogWriter()

    PrintWriter logger = new PrintWriter(
            new LogOutputStream(
                    LoggerFactory.getLogger(Logger.class),
                    Level.DEBUG));
    Logger.setLogWriter(logger);

也许在6年后,其他人会觉得这很有用;)