Отключить консольный вывод из проекта 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))