Java:在包中控制详细程度(诊断消息传递)级别的建议方法是什么?

时间:2012-03-28 15:24:42

标签: java global diagnostics

我是Java的新手,所以我正在寻找一种控制程序包在执行过程中产生的诊断输出量的好方法。

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

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

有更好的方法吗?

谢谢!

5 个答案:

答案 0 :(得分:1)

使用任何可用的日志包,包括java.util.logging或log4j。然后,您可以在逐个包的基础上非常轻松地在执行时配置。这也意味着,当您可以将日志指向System.out时,您也可以使用更复杂的选项。

答案 1 :(得分:1)

查看java的logging facilities

答案 2 :(得分:0)

你应该看一下日志。 Log4j就是一个例子。避免在代码中完全使用System.out.println

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

log4j.logger.com.foo.mypackage=OFF

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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

通常在普通和大型Java项目中,使用日志框架,例如Log4j