Отключить консольный вывод из проекта OPAL?

Я использую платформу 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 ответ

Решение

К настоящему времени я понял, что можно отключить вывод консоли OPAL. Механизм регистрации OPAL использует несколько LogContext объекты. Существует один GlobalLogContext и один LogContext за доступный Project, Поскольку оба они независимы, необходимо замолчать оба типа.

Первый контекст используется для каждого события регистрации, которое не происходит в контексте определенного проекта, в то время как специфический для проекта контекст используется для регистрации сообщений в данном контексте.

OPALLogger.update(...) Метод может быть использован для обновления Logger, который используется для LogContext. С помощью этого метода можно связать новый 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))
Другие вопросы по тегам