2016-06-27 9 views
0

Ich benutze das OPAL-Framework, um statische Analysen zu implementieren. Ich fragte mich, ob es möglich ist, die Konsolenausgabe des Frameworks zu unterdrücken, das während der Ausführung auf der Konsole gedruckt wird. Das Folgende zeigt einen Teil der Ausgabe.Konsolenausgabe aus dem OPAL-Projekt deaktivieren?

... 
[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 
... 

fand ich, dass OPAL mehrere Loglevel hat (das heißt WARN, INFO, ERROR), aber ich konnte die Protokollierung Granularität festlegen nicht einen Weg finden. Ich bin wirklich an Warnungen und Fehlern interessiert, möchte aber die (massive) Ausgabe auf Info-Ebene unterdrücken.

Antwort

2

Inzwischen habe ich herausgefunden, dass es möglich ist, die Konsolenausgabe von OPAL zu unterdrücken. Der OPAL-Protokollierungsmechanismus verwendet mehrere LogContext Objekte. Es existiert ein GlobalLogContext und ein LogContext pro verfügbares Project. Da beide unabhängig sind, ist es notwendig, beide Typen zum Schweigen zu bringen.

Der erste Kontext wird für jedes Protokollierungsereignis verwendet, das nicht im Kontext eines bestimmten Projekts stattfindet, während der projektspezifische Kontext zum Protokollieren von Nachrichten in einem bestimmten Kontext verwendet wird.

Die Methode OPALLogger.update(...) kann verwendet werden, um den Logger zu aktualisieren, der für einen LogContext verwendet wird. Mit dieser Methode ist es möglich, einen neuen Logger mit einem LogContext zu verknüpfen. Wenn Sie OPAL mit der Befehlszeile ausführen, kann eine ConsoleOPALLogger wie folgt verwendet werden.

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