0

我正在制作一个基于 Maven 的 java 库,使用的日志记录是这样的:

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

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

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

这是我的最终目标:

  • 在库项目中运行单元测试时尽可能详细地记录日志
  • 但不向客户端应用程序显示这些“详细”日志,而不需要客户端应用程序故意配置/抑制来自库的日志

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

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

4

4 回答 4

1

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

 LOGGER.setLevel(Level.INFO); 
于 2013-06-06T05:40:12.987 回答
1

Client-App 需要自己的测试。如果客户端应用程序出现问题(只是死胡同),我不明白为什么不应该释放客户端库。

我看到两个 Maven 项目。

  • 图书馆(带有图书馆测试)
  • 依赖于库的客户端应用程序(带有客户端应用程序测试)

所以你在图书馆有一个 noop-config-file

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

并在客户端应用程序中的 noop-config-file

/src/main/java/resources/logging.properties

这样的 noop-config 如下所示:

handlers= java.util.logging.ConsoleHandler
level= SEVERE
于 2013-06-06T06:46:02.280 回答
0

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

为您的单元测试使用单独的 log4j.properties。

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

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

-Dlog4j.configuration=<path to properties file>
于 2013-06-06T05:52:07.383 回答
0

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

于 2015-01-23T20:00:07.443 回答