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

khbbv19g  于 2021-06-30  发布在  Java
关注(0)|答案(4)|浏览(304)

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

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

我在这个库中编写了这么多日志,这对于调试库的流非常有用,特别是在junit测试期间,但是我创建的这个应用程序,我不希望它向客户端应用程序(将使用这个库的应用程序)显示日志。因为太冗长了。
我如何控制哪个登录到客户端应用程序的日志视图。日志如 INFO level 在客户端/示例应用程序中不一定显示库中的?
我的最终目标是:
在库项目中运行单元测试时,使日志尽可能详细
但不向客户机应用程序显示这些“详细”日志,而无需客户机应用程序故意配置/抑制库中的日志
客户机库-是java应用程序使用的项目;这就是我正在做的项目。它生成不应在客户端应用程序中显示的日志。
客户机应用程序-是使用java库的项目/应用程序

tv6aics1

tv6aics11#

我不确定你是否在找这个

LOGGER.setLevel(Level.INFO);
lf3rwulv

lf3rwulv2#

在log4j.properties或log4j.xml中配置日志级别
对单元测试使用单独的log4j.properties。
在maven中,将log4j.properties或log4j.xml文件放入src/test/resources中
或者在运行junit时使用cli属性

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

ee7vknir3#

客户端应用程序需要自己的测试。我不明白为什么客户端lib不应该被释放,如果在客户端应用程序中有任何问题(只是一个死胡同的情况)。
我看到两个maven项目。
库(带库测试)
对库具有依赖关系的客户端应用程序(带有客户端应用程序测试)
所以你在库中有一个noop配置文件

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

在客户端应用程序中

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

这样的noop配置如下所示:

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

nmpmafwu4#

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

相关问题