2016-05-12 10 views
0

Verwenden von JBoss EAP 6.4 (AS 7.x denke ich).Wie kann ich die Erfassung von std-out in JBoss deaktivieren?

Standardmäßig protokolliert der Protokolldienst von JBoss die gesamte Anwendungsausgabe auf stdout (und vermutlich stderr) und verpackt sie in seine eigenen log4j-basierten Protokolle. Wenn ich lokal arbeite, möchte ich diese (nervige) Funktion vollständig deaktivieren, aber die Referenzen, die ich auf den Interwebs gefunden habe, funktionieren entweder nicht oder sind für ältere Versionen von JBoss. Ich habe versucht, jeden möglichen Protokollierungsrahmen in der jboss-deployment-structure Konfiguration auszuschließen und -Dorg.jboss.logging.per-deployment=false als Systemeigenschaft übergebend, aber dennoch fängt JBoss stdout ein.

Wie kann ich es in dieser Version von JBoss deaktivieren?


[1] Wenn Sie den Grund wissen müssen, ist es, weil wir die Protokollierung Konfiguration über logback detailliert sind und, wenn sie lokal in einer IDE ausgeführt wollen in der Lage sein zu sehen, und die Kontrolle, die Ausgabe ohne JBoss in der Konsole anmelden Logging-Service im Weg.

Antwort

0

Es ist in den Eingangspunkten fest codiert, um stdout und stderr zu erfassen. Dies geschieht, indem beide Streams in die definierten Log-Handler geschrieben werden. Aus diesem Grund gibt es keinen wirklich sauberen Weg um ihn herum. Es gibt jedoch Möglichkeiten, es zumindest etwas besser aussehen zu lassen.

Sie können einen neuen console-handler erstellen und einen stdout Logger definieren, um sicherzustellen, dass nur die einfache Nachricht geschrieben wird.

Hier sind einige CLI-Befehle zum Konfigurieren eines Loggers mit dem Namen stdout, um einfach die empfangene Nachricht zu drucken.

/subsystem=logging/pattern-formatter=plain-formatter:add(pattern="%s") 
/subsystem=logging/console-handler=plain-console:add(autoflush=true, target=System.out, named-formatter=plain-formatter) 
/subsystem=logging/logger=stdout:add(use-parent-handlers=false, handlers=[plain-console]) 

Hinweis: Es könnte mein Test logback.xml Konfiguration sein, aber ich hatte ein Muster von %s%n für die plain-formatter zu verwenden.

Die einzige andere Option, die ich denken kann, wäre eine eigene logback ConsoleAppender zu schreiben, die einen Ausgangsstrom eher auf java.io.FileOutputStream.out basierend erzeugt als System.out verwenden.

+0

Ich werde die Frage mit diesem bearbeiten, aber ... sogar es hübscher zu machen ist nicht weit genug. Das Problem ist, dass unsere Aufrufe von slf4j log eine Ebene angeben (Debug, Info, Fehler usw.), aber die JBoss-Protokollierung alles umschließt und auf der INFO-Ebene ausgibt. Wenn ich also beispielsweise meine Root-Logback-Ebene auf WARN setzen möchte, sehe ich auf der Konsole keine Anwendung. Ich verstehe nicht wirklich, warum die logback.xml meines WAR das JBoss-Filterverhalten beeinflusst, aber das habe ich beobachtet. –

+0

Übrigens, wohin geht diese Konfiguration in der Antwort? –

+0

Nun, die logback.xml wird nur verwendet, wenn Sie in Ihrer Bereitstellung ein Logback einfügen. Möchten Sie Ihren eigenen Protokollmanager konfigurieren oder möchten, dass der Container die Protokollierungskonfiguration übernimmt? –