Ist es möglich, dass log4j2 den vom Benutzer angegebenen Zeitstempel anstelle der Systemzeit druckt?
-
21-12-2019 - |
Frage
Ich schreibe eine Anwendung, die aufgezeichnete Daten mit Zeitstempeln verwendet.Zu diesem Zweck habe ich ein Objekt, das dafür verantwortlich ist, die aktuelle Zeit zu kennen (die in der Vergangenheit liegt, aber immer noch monoton ist).
Ich möchte log4j2 so konfigurieren, dass der gedruckte Zeitstempel von diesem Objekt und nicht vom Timer des Computers übernommen wird.Ist es möglich?
Danke.
Lösung
Ja, das ist möglich.Sie können die Systemeigenschaft "log4j.Clock" mit dem vollständig qualifizierten Klassennamen einer Klasse angeben, die die implementiert org.apache.logging.log4j.core.helpers.Clock
Schnittstelle.
Siehe Dokumentation hier: http://logging.apache.org/log4j/2.x/manual/async.html#AllAsync
Ab Version RC1 funktioniert dies nur für asynchrone Logger, aber in der nächsten Version wird dies für alle Konfigurationen funktionieren.Beachten Sie, dass in der nächsten Version der Kern.das Hilfspaket wurde in den Kern verschoben.util.
Siehe auch https://issues.apache.org/jira/browse/LOG4J2-628 Einzelheiten.