Apache Log4j Protokollierung mit einer bestimmten Zeitzone

8

Ich möchte, dass das Protokoll Datumseinträge einer bestimmten Zeitzone enthält. Gibt es eine Möglichkeit, die Zeitzone in log4j.properties zu erzwingen?

Jetzt verwende ich JDK 1.5, Wie Sie bereits wissen, gibt es in JDK 1.5 einen Zeitzonenfehler, der in JDK 1.5 entfernt wird. Im Falle von JDK 1.5 zeigt es standardmäßig "GMT" Zeitzone. Ich möchte in Log4j meine spezifische Zeitzone konfigurieren.

    
Sunny Gupta 02.02.2012, 16:55
quelle

6 Antworten

16

Damit können Sie in jeder Zeile Ihrer Protokolle Zeitzoneninformationen sehen:

%Vor%

Der Trick besteht darin, 'zzz' in das Muster einzufügen, da dies nach Javadoc für java.text.SimpleDateFormat ( Ссылка ), das ist der Code für die Zeitzone. Log4J verwendet dieselben Regeln wie SimpleDateFormat.

Es gibt weitere Details über das im Log4J Javadoc:

Ссылка

Suchen Sie nach der Zeile in der Tabelle, in der das "Conversion Character" der Buchstabe "d" ist.

    
Julius Musseau 02.02.2012 17:35
quelle
4

Am besten verwenden Sie die Apache Extras ™ für Apache log4j ™ Und ersetzen Sie das normale PatternLayout durch org.apache.log4j.EnhancedPatternLayout, wenn Sie eine Eigenschaftendatei verwenden:

%Vor%

Dann können Sie% d {ISO8601} {GMT} anstelle von% d im ConversionPattern verwenden, um Ihr Datum im GMT-Format anzuzeigen. Jede Zeitzone kann anstelle von GMT angegeben werden

    
Kim D. 02.08.2013 02:18
quelle
1

Sie können die folgende Zeile hinzufügen

%Vor%     
Swap L 22.06.2016 10:07
quelle
0

Verwenden Sie org.apache.log4j.helpers.DateLayout als Layout-Klasse und die Eigenschaft timeZone darin.

    
Raihan 02.02.2012 17:13
quelle
0

Fügen Sie ein date Argument in Ihre ConversionPattern ein. Aus der PatternLayout -Dokumentation:

Datum -

  

Wird verwendet, um das Datum des Protokollierungsereignisses in der lokalen Zeitzone auszugeben.   Um das Datum in der Universalzeit auszugeben, verwenden Sie das %utcdate -Muster. Das   Der Datumsumwandlungsspezifizierer kann von einem Datumsformatbezeichner gefolgt werden   zwischen Klammern. Zum Beispiel %date{HH:mm:ss,fff} oder %date{dd MMM yyyy HH:mm:ss,fff} . Wenn kein Datumsformat angegeben ist, dann   Das ISO8601-Format wird angenommen ( Iso8601DateFormatter ).

     

Der Datumsformatbezeichner lässt dieselbe Syntax wie das Zeitmuster zu   Zeichenfolge des ToString .

     

Für bessere Ergebnisse wird empfohlen, das log4net-Datum zu verwenden   Formatierer. Diese können mit einer der Zeichenfolgen angegeben werden   "ABSOLUTE", "DATUM" und "ISO8601" für die Angabe    AbsoluteTimeDateFormatter , DateTimeDateFormatter bzw.   %Code%. Zum Beispiel Iso8601DateFormatter oder %date{ISO8601} .

     

Diese dedizierten Datumsformatier funktionieren deutlich besser als    %date{ABSOLUTE} .

    
mre 02.02.2012 17:18
quelle
0

Dafür gibt es drei Schritte:

1) Fügen Sie die log4j-extras Abhängigkeit hier

hinzu

2) Legen Sie das Layout auf EnhancedPatternLayout fest: log4j.appender.stdout.layout=org.apache.log4j.EnhancedPatternLayout (ändere stdout in den von dir verwendeten Appender)

3) Fügen Sie Ihre Zeitzone in geschweiften Klammern nach Ihrem Datum-Zeit-Muster hinzu log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}{IST} %-5p %c{1}:%L - %m%n (Hier IST in meinem Fall)

Sie können auf die Liste der Zeitzonen-IDs zugreifen, die in Java hier oder hier

    
creativcoder 11.03.2018 11:20
quelle

Tags und Links