2016-06-25 6 views
0

Ich baue eine JSF-Anwendung, die die expect4j-Bibliothek verwendet, und habe es wirklich schwer, die Ausgabe im Glassfish-Serverprotokoll zu unterdrücken. Ich habe versucht, eine Datei logging.properties in meinem Verzeichnis src/main/resources basierend auf der Datei logging.properties von expect4j zu erstellen. Ich habe auch versucht, eine log4j2.xml-Datei zu erstellen, um dasselbe zu erreichen. Ich habe sogar versucht, die Datei log4j2.xml in das WEB-INF-Verzeichnis neben web.xml zu verschieben, basierend auf einem anderen Post, den ich durch die Recherche gefunden habe.Probleme bei der Unterdrückung der Protokollausgabe von einem Jar

Ich möchte es unterdrücken, weil es viele Nachrichten auf der Info/Debug-Ebene generiert. Hier ein Beispiel für die Nachricht ist:

[2016-06-25T14:36:06.195-0600] [glassfish 4.1] [INFO] [] [] [tid: _ThreadID=225 _ThreadName=Thread-8] [timeMillis: 1466886966195] [levelValue: 800] [[4229 [__ejb-thread-pool5] DEBUG expect4j.Expect4j - Found EOF]] 

über expect4j Blick scheint es, dass es nur auf slf4j abhängt, also soll ich kein Problem habe mit log4j2 als meinen Logger definieren.

Hier sind die folgenden Abhängigkeiten Ich bin in meinem Maven Projekt einschließlich:

  • expect4j: 1.6
  • slf4j-log4j12: 1.7.7
  • jstl: 1.2
  • jstl-api: 1,2-rev-1
  • javax.ejb-api: 3.2
  • JSF-api: 2.2.8-02
  • JSF-Umsetz : 2.2.8-02
  • primefaces: 5.2
  • log4j-web: 2.6.1

Hier ist, was ich in meiner logging.properties Datei:

handlers=java.util.logging.ConsoleHandler 
.level=INFO 
java.util.logging.ConsoleHandler.level=INFO 
#expect4j.handler=java.util.logging.ConsoleHandler 
expect4j.level=SEVERE 

Hier ist, was ich habe in meiner log4j2.xml Datei:

<?xml version="1.0" encoding="UTF-8" ?> 
<Configuration status="INFO"> 
    <Appenders> 
    <Console name="Console" target="STDOUT"> 
     <PatternLayout 
     pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 
    </Console> 
    </Appenders> 
    <Loggers> 
    <Logger name="expect4j" level="error" additivity="false"> 
     <AppenderRef ref="Console" /> 
    </Logger> 
    <Root level="warn"> 
     <AppenderRef ref="Console" /> 
    </Root> 
    </Loggers> 
</Configuration> 

ich unter diesem Link aussehen, aber ich sah nicht, was es wurde darauf hingewiesen in jconsole als ich mich an meinen Glassfish Server angeschlossen habe. Suppress java util logging from 3rd party jar.

Vielen Dank für die Hilfe, die Sie möglicherweise leisten können.

Antwort

2

Sie leiten Ihre gesamte slf4j-Ausgabe an log4j 1.x weiter, indem Sie slf4j-log4j12 verwenden. Stattdessen sollten Sie log4j-slf4j-impl verwenden. Wenn expect4j slf4j verwendet, sollten Sie die Datei logging.properties nicht benötigen. Obwohl log4j-slf4j-impl sie enthalten sollte, sollten Sie auch die log4j-api und log4j-core jars einschließen. Wenn Sie möchten, dass die Protokolldatei java util an log4j 2 gerichtet ist, dann fügen Sie auch log4j-jul jar hinzu.

+0

Vielen Dank @Rgoers, das scheint der Trick getan zu haben. Als ich mein Eclipse-Projekt anfing, waren die Vorschläge, die Maven anbot, unvollständig. Eclipse zeigte an, dass die Maven-Indizierung deaktiviert war, also habe ich eine Google-Suche nach der Aktivierung durchgeführt, und schließlich habe ich ein vollständigeres Repository für die Suche erhalten. Dies ergab alle benötigten slf4j- und log4j-Bibliotheken. In meinem Fall mit der expect4j-Bibliothek war java.util.logging nicht notwendig, da die Bibliothek slf4j verwendet. Danke nochmal für deine Hilfe. – klog

Verwandte Themen