log4j Rolling file appender - multi-threading Probleme?
Gibt es irgendwelche bekannten bugs mit der Log4J rolling file appender. Ich habe mit log4j glücklich für eine Reihe von Jahren, aber war das nicht bewusst. Ein Kollege von mir ist darauf hindeutet, dass es bekannte Probleme ( und ich fand man einen Bugzilla-Eintrag auf dieser), wo sich unter der schweren Last,die rolling file appender (wir nutzen die Zeit-basiert) kann nicht korrekt durchführen, wenn der rollover tritt auf, @ midnight.
Bugzilla-Eintrag - https://issues.apache.org/bugzilla/show_bug.cgi?id=44932
Schätzen inputs und Tipps, wie Sie den anderen bei der Bewältigung dieser.
Dank,
Manglu
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich nicht erlebt dieses Problem mich, und aus dem bug-report, ich würde vermuten, dass es sehr selten ist. Th RollingFileAppender Log4j hat immer gearbeitet, in einer vorhersagbaren und zuverlässigen Weise für die apps, die ich entwickelt haben und gepflegt werden.
Diesem bestimmten Fehler, Wenn ich das richtig verstanden habe, würde nur passieren, wenn es mehrere Instanzen von Log4j, wie wenn Sie hatte mehrere Instanzen der gleichen app gleichzeitig laufen, das schreiben in die gleiche Protokolldatei. Dann, wenn es rollover-Zeit, eine Instanz nicht bekommen kann eine Sperre auf die Datei, um Sie zu löschen und archivieren seiner Inhalte, was den Verlust der Daten, die archiviert werden sollen.
Kann ich nicht sprechen, um alle anderen bekannten bugs, die Ihr Kollege bereits erwähnt, es sei denn, Sie möchten, um Sie zu zitieren speziell. Im Allgemeinen, ich glaube, Log4j ist zuverlässig für die Produktion von apps.
@kg, das passiert mir auch. Exakt diese situation. 2 Instanzen des selben Programms.
Ich aktualisiert auf die neuen Rollen.RollingFileAppender anstatt DailyFileRoller( was auch immer es genannt wurde ).
Mir laufen zwei Instanzen simultenously via crontab. Die Instanzen Ausgabe so viele Nachrichten wie Sie können bis 5 Sekunden erreicht ist. Messen Sie die Zeit für 1 Sekunde mit System.currentTimeMillis, und fügen Sie einen Zähler für die Schätzung eines 5-Sekunden-Zeitfenster für die Schleife. Es gibt also minimaler overhead in diesem test. Jede Ausgabe von log-Nachricht enthält eine inkrementelle Zahl, und die Nachricht enthält Bezeichner-set von der Kommandozeile in der Lage sein, um Sie zu trennen.
Vom setzen der log-Meldung, um gemeinsam einer der Prozesse gelingt es schriftlich von Beginn bis zum Ende der Sequenz, die anderen verliert man die ersten Einträge seiner Ausgabe (von 0 weiter).
Diese sollten wirklich behoben werden...