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

时间:2016-06-27 14:08:57

标签: scala static-analysis opal-framework

我正在使用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有几个LogLevels(即WARN,INFO,ERROR)但我找不到指定日志记录粒度的方法。我真的对警告和错误感兴趣,但我想在信息级别压缩(大量)输出。

1 个答案:

答案 0 :(得分:2)

到现在为止,我发现可以抑制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))