Deaktivieren Sie die Achse log4j-Protokollierung in jboss
Habe ich kleine Anwendung, die das hochladen von Bildern auf eine andere website via webservice.
Mein Aktuelles problem ist, dass-Achse ist die Protokollierung der gesamten xml-Nachricht (einschließlich der binären Daten des Bildes!) über STDOUT und ich kann nicht scheinen, um herauszufinden, wie um Sie zu deaktivieren.
Meine log4j Einstellungen für jboss (jboss-log4j.xml) mit einem appender für den normalen STDOUT Info loggings, und ich habe versucht zu deaktivieren-Achse mit unterschiedlichen Kategorie-Einstellungen:
<appender name="STDLOG" class="org.jboss.logging.appender.RollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File" value="${jboss.server.log.dir}/myapplication.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="5MB"/>
<param name="MaxBackupIndex" value="10"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] (%t) %m%n"/>
</layout>
</appender>
verwenden Sie diese Einstellung für STDOUT:
<category name="STDOUT">
<priority value="DEBUG"/>
<appender-ref ref="STDLOG"/>
</category>
Habe ich versucht diese Kategorie-Einstellungen, ohne jede änderung in das Ergebnis:
<category name="log4j.logger.org.apache.axis" additivity="false">
<priority value="ERROR"/>
</category>
<category name="org.apache.axis">
<priority value="ERROR"/>
</category>
Einige Beispiel-log-Ausgabe sieht wie folgt aus:
2009-08-07 10:29:43,911 INFO [STDOUT] (http-127.0.0.1-8080-1) =======================================================
= Elapsed: 2190 milliseconds
= In message: <?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<addVehicleImage xmlns="urn:VMgrWebService">
<id xmlns="">APP-T4QKR3U</id>
<idType xmlns="">chiffre</idType>
<data xmlns="">9j4AAQSkZJRgABAQAAAQABAAD2wBDAAUDBAQEAwUEBAQFB
QUGBww0TDMnrXAfKlLjnNJZcciiAOtqk9NG99qhZJKuyYq5k3G
8P2bVSOpT7rVddRP2Z/yqidRuMMKaO2CXRQNWP2jfOo4S4Bo3W
removed rest of image data...
IBwcHBw8LCwkMEQ8SEhEPERETFhwXExQaFRERGCEYGe1UqaZJJy0jSHPGQ
2009-08-07 10:29:43,927 INFO [STDOUT] (http-127.0.0.1-8080-1) Upload result: true for image mypicture.JPG
Update
Ich habe in der axis-1.4.jar und gibt es eine Datei namens simplelog.Eigenschaften:
# Logging detail level,
# Must be one of ("trace", "debug", "info", "warn", "error", or "fatal").
org.apache.commons.logging.simplelog.defaultlog=info
Diese Einstellung, um Fehler innerhalb des Gefäßes, oder als eine Kategorie, in jboss-log4j.xml überhaupt keine Hilfe.
Jemand eine Idee, wie ich das abschalten kann die Achse Protokollierung oder zumindest legen Sie es auf FEHLER Ebene?
Jubel
Frank
- Welche version von Axis ist das?
- mit axis-1.4.jar
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist möglicherweise ein wenig spät am Tag, aber das problem scheint nicht zu sein, dass die Protokollierung selbst erfolgt in der Achse (via System.aus-und Commons-Logging), sondern vielmehr, dass die LogHandler vorhanden ist, in die handler-Kette. Das ist, wie die verstrichene Zeit wird immer protokolliert.
Können Sie deaktivieren Sie diese Prozedur aus der Achsen-Konfiguration-Datei(s) - server-config.wsdd-und/oder client-config.wsdd, je nachdem, ob Sie mit der Achse, wie ein server oder ein client.
Den Grund, warum Sie sehen die Nachrichten in der Konsole ist wahrscheinlich aufgrund der LogHandler.writeToConsole-Eigenschaft auf true festgelegt wird. Wenn Sie LogHandler.writeToConsole auf false, sollte es schreiben in eine Datei gemäß der LogHandler.fileName-Eigenschaft. Standardmäßig ist der name der Datei-Achse.log.
Ok, nach dem Versuch, eine bessere Lösung zu finden, die einzige wirkliche Möglichkeit war, um die alte legacy-code und schalten Sie alle System.aus-Anrufe in Echtzeit logging-Anweisungen (sowieso viel besser), und dann filtern Sie einfach die restlichen STDOUT Nachrichten in eine log-Datei.
Einer der Hauptgründe scheint zu sein, Jboss selbst. Diese Diskussion aus der axis2-Mailingliste erklärt warum:
Ahh, aber Sie nicht erwähnt, dass Sie mithilfe von jboss! Es ist ziemlich viel Kräfte
Sie nutzen Ihre Eltern log4 config . Ignorieren Sie die axis2-Protokollierung in diesem
Fall, und siehe:
~/jboss/server/default/conf/log4j.xml
Dort haben Sie zur Begrenzung der Kategorien. Zum Beispiel, Sie haben:
Könnte man Weg lassen, wie Sie ist und einfach erhalten Sie Ihre logs von server.log .
Ich habe versucht, die Kategorie, ohne Erfolg. Ich nehme an, dies ist aufgrund der Unterschiede zwischen axis und axis2. So ist die einzige Lösung Links zu gehen, die gute coding Weg und einfach nicht mit STDOUT in Ihrem eigenen code 😉
First off, werden Sie wollen, um zu überprüfen, dass Ihre log4j-Konfiguration ist eigentlich das Lesen - ich erinnere mich, dass in der Vergangenheit mindestens eine Achse jar (ich denke, es kann haben wurde
axis-ant.jar
) schuldig war, auf eine Bündelung Ihrer eigenen log4j.Eigenschaften. Kann es sein, dass log4j ist das Lesen eine andere Konfigurationsdatei als die ihrige, so dass Sie Ihre Bemühungen bei der Bearbeitung der Konfiguration sinnlos!Können Sie die system-Eigenschaften
-Dlog4j.debug
zu haben, log4j print auf die Standardausgabe, welche Konfigurationsdatei gelesen wird. Wenn nötig, können Sie mit-Dlog4j.configuration=<file>
zu zeigen, um Ihre eigene Datei.Auch, ich glaube nicht, dass dies die Ursache Ihrer Probleme, aber warum sind Sie Einstellung der additivität auf false?
Das problem ist, dass die Achse nicht mit Log4j zu melden, dass die Nachricht, so ändern Sie die log4j-Protokollierung auf Ebene von Klassen, nicht von Bedeutung. Achse ist mit einem System.aus.println.
Das einzige was ich mir vorstellen kann (das ist wirklich nicht schön, angesichts der Nebenwirkungen) ist, die STDOUT-logging ganz abschalten. Wohl die Einstellung der Priorität auf aus tun.
Die einzige wirkliche Lösung ist eine Korrektur der Achse und den patch-code nicht Pumpe die xml-Datei zu System.aus, sondern eher die der logging-Mechanismus statt - dann könnte man es Steuern.
Ist es sehr wichtig zu wissen, welche log4j.Eigenschaften-Datei oder log4j.xml wird Sie auch gelesen. und als Matt darauf hingewiesen, dies ist entscheidend, zu wissen, warum deine Trickserei-Bemühungen nicht funktionieren.