【问题标题】:Logger in a .jar java library.jar java 库中的记录器
【发布时间】:2011-02-17 06:04:17
【问题描述】:

如何禁用java程序中使用的java库(jar)的记录器(打印输出)?

谢谢

更新:有问题的库使用 java 中的内置记录器类 (java.util.logging.Logger)。

【问题讨论】:

    标签: java jar logging


    【解决方案1】:

    查看how can i disable the default console handler, while using the java logging api ?的答案

    或者,将日志级别设置为 OFF,如日志级别的 Javadocs 中所示。引用:

    此外,还有一个级别 OFF 可用于关闭日志记录,还有一个级别 ALL 可用于启用所有消息的日志记录。

    【讨论】:

      【解决方案2】:

      将该包的日志级别设置为FATAL。这实际上不会关闭 jar 中的所有日志消息,但应该最小化。另请注意,如果您有多个包结构,则必须添加单独的行

      log4j.logger.com.foo=FATAL
      

      【讨论】:

      • 有问题的库使用内置记录器,而不是 java log4j 库...无论如何感谢您的想法
      【解决方案3】:

      如果您使用 log4j,最简单的方法是提高特定库的日志记录级别,例如 warnerror

      例如,如果您不希望所有 Apache API、Spring API 和 Hibernate API 使您的日志文件混乱,您可以执行以下操作:-

      <logger name="org.apache">
          <level value="warn" />
      </logger>
      
      <logger name="org.springframework">
          <level value="warn" />
      </logger>
      
      <logger name="org.hibernate">
          <level value="warn" />
      </logger>
      

      这样,这些库中的所有debuginfo 都不会显示。

      【讨论】:

      • 有问题的库使用内置记录器,而不是 java log4j 库...无论如何感谢您的想法
      【解决方案4】:

      除了提高日志级别之外,您还可以告诉库使用 NOP 记录器 - 请参阅 here。 NOP 记录器将默认不做任何事情,这正是您想要的。

      编辑后确定:如果您可以告诉库它应该使用哪个记录器(并且如果您无法访问记录对象,我认为任何方法都不会起作用),只需制作您自己的 NopLogger,即扩展记录并用空方法覆盖所有方法,

      【讨论】:

        猜你喜欢
        • 2012-04-02
        • 1970-01-01
        • 2015-12-15
        • 2012-05-13
        • 2018-07-06
        • 2011-10-04
        • 2015-03-25
        • 1970-01-01
        相关资源
        最近更新 更多