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

Java 测试期间的详细日志记录,但在发布的应用程序中的简短日志记录,java,unit-testing,logging,Java,Unit Testing,Logging,我正在制作一个基于Maven的java库,使用的日志如下: import java.util.logging.Logger; private static final Logger LOG = Logger.getLogger(MyLibraryClass.class.getName()) 我在这个库中编写了很多日志,这对于调试库的流程非常有用,特别是在JUnit测试期间,但是我创建的这个应用程序,我不希望它向客户端应用程序(将使用这个库的应用程序)显示日志。

我正在制作一个基于Maven的java库,使用的日志如下:

    import java.util.logging.Logger;
    private static final Logger LOG 
        = Logger.getLogger(MyLibraryClass.class.getName())
我在这个库中编写了很多日志,这对于调试库的流程非常有用,特别是在JUnit测试期间,但是我创建的这个应用程序,我不希望它向客户端应用程序(将使用这个库的应用程序)显示日志。因为它太冗长了

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

这是我的最终目标:

  • 在 图书馆项目
  • 但不向客户机应用程序显示这些“详细”日志,而无需客户机应用程序故意配置/抑制库中的日志
客户端库-是Java应用程序使用的项目;这就是我正在做的项目。这将生成不应显示在客户端应用程序中的日志

客户端应用程序-是使用Java的项目/应用程序 图书馆


我不确定你是否在找这个

 LOGGER.setLevel(Level.INFO); 

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

对单元测试使用单独的log4j.properties

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

或者在运行junit时使用CLI属性

-Dlog4j.configuration=<path to properties file>
-Dlog4j.configuration=

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

我看到两个maven项目

  • 库(带有库测试)
  • 对库具有依赖关系的客户端应用程序(带有客户端应用程序测试)
因此,库中有一个noop配置文件

/src/test/java/resources/logging.properties 
在客户端应用程序中,在

/src/main/java/resources/logging.properties
这样的noop配置如下所示:

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

您对日志消息的优先级太高。所有信息、警告和错误消息都应该是您希望用户看到的消息。如果消息只对开发人员有用,那么它应该是DEBUG或TRACE。然后将日志润滑配置为仅显示信息、警告和错误消息

这是log4j.properties文件的内容,而不是logging.properties文件的内容如果您使用的是log4j,请参阅