2016-05-21 3 views
6

Ich bin neu bei Kettensäge und log4j, das ist ein Follow-up zu einem früheren post. Ich habe einige Geräte, die Socket-Handler verwenden, um Datensätze zu senden mit der folgenden Konfigurationsdatei Stichsäge:wie Apache Kettensäge für die Eingabe von mehreren Geräten zu konfigurieren

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration > 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true"> 
<plugin name="XMLSocketReceiver" class="org.apache.log4j.net.XMLSocketReceiver"> 
     <param name="decoder" value="org.apache.log4j.xml.UtilLoggingXMLDecoder"/> 
     <param name="Port" value="2222"/> 
    </plugin> 
<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender"> 
     <param name="Threshold" value="INFO" /> 
     <param name="File" value="chainsawtablet.log"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d %-5p [%c{1}] %m %n" /> 
     </layout> 
    </appender> 
<root> 
    <priority value="debug"/> 
    <appender-ref ref="fileAppender" /> 
</root> 
</log4j:configuration> 

Der Empfänger scheint in arbeiten, dass ich eine Registerkarte in den Kettensäge gui mit einigen Log-Aufzeichnungen zu sehen. aber es scheint nie eine Protokolldatei zu schreiben. Vielleicht wartet es auf einen Tag oder etwas. Gibt es einen Weg, um es häufiger Rollover zu machen?

In der Protokolldatei werden keine Datensätze angezeigt. brauche ich etwas xml, um den Empfänger an einen Appender anzuhängen oder ist es automatisch?

Ich möchte die Protokolldateien durch ihren Quellhost getrennt. Wenn die Verbindung neu gestartet wird, möchte ich außerdem, dass die Protokolldatei einen Rollover ausführt.

Ich würde auch gerne eine Woche im Wert von Protokolldateien zu halten.

Ich möchte alle Protokollaufzeichnungen sehen, so sollten: param name="Threshold"value="INFO"ALL statt INFO sein?

Wie wäre es mit der: priority value="debug"?

Alle Hinweise werden geschätzt.

bearbeiten: versuchen ein: datePattern value="yyyyMMdd-HHmm" die angeblich jede Minute rollt erzeugt auch keine Protokolldatei.

bearbeiten im Zusammenhang question und post, auch here und there.

Antwort

0

Sie scheinen log4j an Kettensäge angeschlossen zu haben. Die Protokollnachrichten, die Sie in der Chainsaw-GUI sehen - sehen sie wie interne selbstsignierende Chainsaw-Nachrichten aus?

Sie müssen einen SocketAppender konfigurieren und mit mindestens einem Logger oder dem Root-Logger verknüpfen. Ereignisse aus Ihrer Anwendung werden dann in Chainsaw angezeigt. Wenn Sie sich in einer Protokolldatei abmelden möchten, die eine andere Sache ist, aber ich nehme an, dass Sie Chainsaw als Live-Event-Display-GUI verwenden möchten, da das die meisten Leute dafür verwenden.

Hier ist eine minimale Konfigurationsdatei:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/' debug='true'> 

    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d %5p %c - %m%n"/> 
    </layout> 
    </appender> 

    <appender name="CHAINSAW" class="org.apache.log4j.net.SocketAppender"> 
    <param name="RemoteHost" value="localhost"/> 
    <param name="Port" value="4445"/> 
    <param name="LocationInfo" value="true"/> 
    </appender> 

    <root> 
    <level value ="debug"/> 
    <appender-ref ref="STDOUT" /> 
    <appender-ref ref="CHAINSAW" /> 
    </root> 

</log4j:configuration> 
+0

i nicht log4j verwendet werde. Die Nachrichten, die ich sehe, stammen vom XML-Socket-Empfänger - sie sehen aus wie normale xml-jdk-Protokolldatensätze. –

+0

sagst du, dass ich einen Appender für jeden Empfänger brauche? –

+0

Ich habe Schwierigkeiten, dem zu folgen, was Sie einrichten möchten. Sie erwähnen _i bin neu bei Kettensäge und log4j_, aber dann _ ich benutze nicht log4j_. Was ist _Jigsaw_? Was versuchst du mit Chainsaw zu tun - hast du eine GUI, mit der Logging-Ereignisse live überwacht werden können? Können Sie Ihre Anwendung für die Protokollierung konfigurieren? Führt es die 'log4j'-API und Protokollierung auf einem Remote-Socket? – javabrett

Verwandte Themen