【问题标题】:Java: what would be a suggested way of controlling verbosity (diagnostic messaging) level in a package?Java:在包中控制详细程度(诊断消息)级别的建议方法是什么?
【发布时间】:2012-03-28 15:24:41
【问题描述】:

我对 Java 还很陌生,因此正在寻找一种控制包在执行期间产生的诊断输出量的好方法。

所以假设我有一个可以集成到不同程序中的包。为简单起见,我们假设我想在执行期间不产生诊断输出,或者产生一些将发送到 System.out 的输出。问题是什么是最优雅和最可靠的方法。

我能否在包中创建一个全局布尔变量,其值将设置在调用此包的应用程序中的一个或多个点,然后我会在包中我想要生成诊断的每个点检查它的值输出。这样我就不必将控制参数传递给包中​​每个类的每个方法。

有没有更好的办法?

谢谢!

【问题讨论】:

    标签: java global diagnostics


    【解决方案1】:

    使用许多可用的日志记录包中的任何一个,包括 java.util.logging 或 log4j。然后,您可以非常轻松地在执行时逐个包地配置它。这也意味着,虽然您可以将日志定向到 System.out,但您也可以使用更复杂的选项。

    【讨论】:

      【解决方案2】:

      看java的logging facilities

      【讨论】:

        【解决方案3】:

        您应该看看日志记录。 Log4j 就是一个例子。完全避免在代码中使用System.out.printlns。

        使用 log4j,您可以配置类似下面的内容,这将关闭包 com.foo.mypackage 生成的所有日志记录输出。

        log4j.logger.com.foo.mypackage=OFF
        

        一旦你过了那个阶段,我建议你看看SLF4JLogback

        【讨论】:

          【解决方案4】:

          您可以使用Log4J 在代码中插入日志记录语句,并根据需要打开或关闭它们。

          【讨论】:

            【解决方案5】:

            您应该使用日志记录。在开发项目时是一个非常重要的方面。我建议您检查以下提示:

            http://javarevisited.blogspot.de/2011/05/top-10-tips-on-logging-in-java.html

            一般在普通和大的java项目中,都会用到日志框架,例如Log4j

            【讨论】:

              猜你喜欢
              • 2016-12-04
              • 1970-01-01
              • 2012-10-07
              • 2012-03-08
              • 1970-01-01
              • 1970-01-01
              • 2015-04-30
              • 1970-01-01
              • 2021-04-04
              相关资源
              最近更新 更多