2016-06-27 3 views
0

Я использую рамки 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 имеет несколько уровней протоколирования (т.е. WARN, INFO, ERROR), но я не мог найти способ, чтобы указать протоколирование зернистости. Меня действительно интересуют предупреждения и ошибки, но я хотел бы подавить (массивный) вывод на информационном уровне.

ответ

2

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

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

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