测试期间的详细日志记录,但在已发布的应用程序中简化日志记录

时间:2013-06-06 05:27:37

标签: java unit-testing logging

我正在创建一个基于Maven的java库,其中使用的日志记录是:

    import java.util.logging.Logger;
    private static final Logger LOG 
        = Logger.getLogger(MyLibraryClass.class.getName())

我在这个库中编写了很多日志,这在调试库的流程时非常有用,特别是在JUnit测试期间,但是我创建了这个应用程序,我不希望它将日志显示给客户端应用程序(将使用此库的应用程序)。因为它太冗长了。

如何控制哪些登录到客户端应用程序的日志视图中。来自库的INFO level等日志不一定会显示在客户端/示例应用程序中?

这是我的最终目标:

  • 在运行单元测试时,要使日志尽可能详细 图书馆项目
  • 但是不向客户端应用程序显示这些“详细”日志,而不需要客户端应用程序故意配置/禁止库中的日志
  

客户端库 - 是Java应用程序使用的项目;这是我正在研究的项目。这会生成不应在客户端应用程序中显示的日志。

     

客户端应用程序 - 是使用Java的项目/应用程序   文库

4 个答案:

答案 0 :(得分:1)

我不确定你是否在寻找这个

 LOGGER.setLevel(Level.INFO); 

答案 1 :(得分:1)

Client-App需要自己的测试。我不明白为什么如果客户端应用程序中存在问题(仅仅是一个死胡同),不应该发布Client-lib。

我看到两个maven项目。

  • 图书馆(带图书馆测试)
  • 具有对库的依赖性的Client-App(带有Client-App-Tests)

所以你在图书馆里有一个noop-config文件

/src/test/java/resources/logging.properties 

并在Client-App中的

中的noop-config文件
/src/main/java/resources/logging.properties

这样的noop-config看起来像这样:

handlers= java.util.logging.ConsoleHandler
level= SEVERE

答案 2 :(得分:0)

在log4j.properties或log4j.xml中配置日志级别

使用单独的log4j.properties进行单元测试。

在maven中将log4j.properties或log4j.xml文件放入src / test / resources

运行junit时使用CLI属性

-Dlog4j.configuration=<path to properties file>

答案 3 :(得分:0)

您的日志消息优先级过高。所有INFO,WARN和ERROR消息都应该是您希望用户看到的消息。如果消息仅对开发人员有用,则应该是DEBUG或TRACE。然后配置您的日志记录库,以仅显示INFO,WARN和ERROR消息。