禁用来自 OPAL 项目的控制台输出?

Disable console output from the from the OPAL project?

我正在使用 OPAL 框架来实现静态分析。我想知道是否有可能在执行时抑制打印在控制台上的框架的控制台输出。下面是输出的一部分。

...
[info][OPAL] Bytecod Representation - Development Build (asserstions are enables) 
[info][project configuration] the JDK is part of the analysis
[warn][project configuration] supertype information incomplete
...

我发现 OPAL 有几个日志级别(即 WARN、INFO、ERROR),但我找不到指定日志记录粒度的方法。我对警告和错误非常感兴趣,但我想在信息级别抑制(大量)输出。

现在我发现可以抑制 OPAL 的控制台输出。 OPAL 日志记录机制使用多个 LogContext 对象。它存在一个 GlobalLogContext 和一个 LogContext 每个可用 Project。由于两者都是独立的,因此有必要将这两种类型都静音。

第一个上下文用于在特定项目的上下文中未发生的每个日志记录事件,而特定于项目的上下文用于记录给定上下文中的消息。

OPALLogger.update(...) 方法可用于更新用于 LogContext 的 Logger。使用此方法,可以将新的 Logger 与 LogContext 相关联。如果你是运行OPAL用命令行,一个ConsoleOPALLogger可以这样用

val project = ...    
OPALLogger.updateLogger(project.logContext, new ConsoleOPALLogger(true, org.opalj.log.Error))
OPALLogger.updateLogger(GlobalLogContext, new ConsoleOPALLogger(true, org.opalj.log.Error))