【问题标题】:Turning off logging for Hibernate c3p0关闭 Hibernate c3p0 的日志记录
【发布时间】:2011-08-06 21:29:25
【问题描述】:

我正在使用 Hibernate 的 c3p0 连接池和标准 Java 1.4 java.util.logging。启动时,我的应用程序在static 块中设置它的日志记录属性(包括格式化程序和日志级别)。每次启动我的应用程序时,我都会看到以下内容:

2011-04-16 17-43-51 [com.mchange.v2.log.MLog] INFO: {MLog.<clinit>) MLog clients using java 1.4+ standard logging.
2011-04-16 17-43-51 [com.mchange.v2.c3p0.C3P0Registry] INFO: {C3P0Registry.banner) Initializing c3p0-0.9.1 [built 16-January-2007 14:46:42; debug? true; trace: 10]
2011-04-16 17-43-51 [com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource] INFO: {AbstractPoolBackedDataSource.getPoolManager)
...

我试过了

Logger.getLogger("com.mchange").setLevel(Level.WARNING);
com.mchange.v2.log.MLog.getLogger().setLevel(MLevel.WARNING);
System.setProperty("com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL", "WARNING");

但我现在发现的唯一防止它的方法是

Logger.getLogger("").setLevel(Level.WARNING);

这会影响一切 - 不是一个好的副作用。谷歌没有帮助。有人可以帮忙吗?

【问题讨论】:

    标签: java hibernate logging c3p0


    【解决方案1】:

    我找到的方法是设置系统属性

    System.setProperty("com.mchange.v2.log.MLog", "com.mchange.v2.log.FallbackMLog");
    

    除了

    System.setProperty("com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL", "WARNING");
    

    我认为,没有任何其他日志记录系统会使其成为可选的,但似乎我错了。

    附言

    该死的那些翻天覆地的自定义日志实现,就像 c3p0 使用的那样......

    【讨论】:

    • 将日志实际重定向到控制台非常有用 [在我​​的情况下是 tomcat 日志]。
    【解决方案2】:

    我找到实现这一目标的方法

    在您的类路径中创建一个名为 mchange-log.properties 的文件,并将 Frozen Spider 建议的属性放入其中。

    com.mchange.v2.log.MLog=com.mchange.v2.log.FallbackMLog
    com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL=WARNING
    

    即使您无法直接设置系统属性,也可以正常工作。

    【讨论】:

    • 将此添加到我的 log4j.properties。此外,com.mchange.v2.log.MLog.getLogger().setLevel(MLevel.SEVERE);
    【解决方案3】:

    您不想看到任何 c3p0 日志记录吗?

    如果是这样试试:

    Logger.getLogger("com.mchange.v2.c3p0").setLevel(Level.WARNING);
    

    或者,如果您甚至不想看到日志的第一行:

    Logger.getLogger("com.mchange.v2").setLevel(Level.WARNING);
    

    【讨论】:

    • 您在什么时候以编程方式设置上述日志级别?也许,您试图在执行上述代码之前删除日志的日志记录。您能否验证一下您要删除的日志记录是否发生在上述代码执行之前?
    • 不,它们是在那之后发生的。可以通过Logger.getLogger("").setLevel(Level.WARNING);或者我自己回复中描述的方法来验证。关键是要摆脱烦人的(至少对我而言)一堆配置文件——Hibernate 已经需要足够的配置文件了。此外,我仍然没有看到 log4j 或 Logback 比 jdk1.4 日志记录包有任何实质性优势。
    【解决方案4】:

    似乎 c3p0 日志记录默认为 DEBUG。这可能会产生很多噪音。

    通过在 log4j.properties 中添加这样的一行,您是在告诉记录器不要用 c3p0 消息打扰您 - 除非它很重要:

    log4j.logger.com.mchange.v2=WARN
    

    【讨论】:

      【解决方案5】:

      这可能真的很晚了,但是根据 c3p0 项目网站,可以在 mchange-log.properties 中配置日志记录,以便您可以使用 slf4j 或 log4j(因此也可以使用 Logback)捕获信息。

      链接http://www.mchange.com/projects/c3p0/#configuring_logging 提供了以下信息:在您的mchange-log.properties 文件中将属性com.mchange.v2.log.MLog 设置为等于com.mchange.v2.log.slf4j.Slf4jMLog 然后在您的logback.xml 中您可以提供这样的记录器:

      <logger name="com.mchange" level="warn" additivity="false">
          <appender-ref ref="c3p0-log" />
      </logger>
      

      注意:您需要先创建一个名为 c3p0-log 的 logback appender,然后才能使用这段代码。

      【讨论】:

        【解决方案6】:

        在你的根类路径中创建一个名为 log4j.properties 的文件 在那里设置以下内容,

        # Configure the name of the file for the LOGGER appender
        log4j.appender.LOGGER=org.apache.log4j.ConsoleAppender
        log4j.appender.LOGGER.layout=org.apache.log4j.PatternLayout
        log4j.appender.LOGGER.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n
        log4j.appender.LOGGER.append=false
        
        # this line logs everything from hibernate package at info level, you can refine this to include only some pachages like log4j.logger.org.hibernate.hql etc.,
        log4j.logger.org.hibernate=INFO, LOGGER
        
        log4j.logger.org.jboss.cache=INFO, LOGGER
        

        这是实现日志记录的更好方法,因为如果您以编程方式设置日志记录策略,那么配置有时可能根本不会生效(就像您的情况一样)。如果您使用 log4j.properties 文件,则配置在应用程序启动时应用,一切顺利。

        【讨论】:

          【解决方案7】:

          这只发生在较旧的 c3p0 版本上。因此,您是否可以仅更新到较新版本也可能值得检查。

          【讨论】:

            猜你喜欢
            • 2011-02-27
            • 2012-08-02
            • 1970-01-01
            • 2012-10-23
            • 1970-01-01
            • 2014-02-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多