Ich benutze slf4j + logback für die Anmeldung in unserer Anwendung. Früher haben wir jcl + log4j verwendet und kürzlich verschoben.
Aufgrund der hohen Anzahl an Anmeldungen in unserer Anwendung besteht die Möglichkeit, dass die Festplatte in der Produktionsumgebung voll ist. In solchen Fällen müssen wir aufhören zu protokollieren und die Anwendung sollte gut funktionieren. Was ich im Web gefunden habe, ist, dass wir den Logback-StatusManager für solche Fehler abfragen müssen. Dies wird jedoch eine Abhängigkeit mit Logback für die Anwendung hinzufügen. Für log4j habe ich festgestellt, dass wir einen Appender erstellen können, der die Anmeldung in solchen Szenarien stoppt. Das wiederum wird eine Anwendungsabhängigkeit mit log4j verursachen.
Gibt es eine Möglichkeit, dies nur mit slf4j zu konfigurieren, oder gibt es einen anderen Mechanismus, um damit umzugehen?
Sie müssen nichts tun oder konfigurieren. Logback wurde entwickelt, um diese Situation gut zu behandeln. Sobald die Zielfestplatte voll ist, wird die FileAppender
des Logbacks für eine bestimmte kurze Zeit nicht mehr darauf schreiben. Sobald diese Verzögerung verstrichen ist, versucht sie, sich zu erholen. Wenn der Wiederherstellungsversuch fehlschlägt, wird die Wartezeit schrittweise auf maximal 1 Stunde erhöht. Wenn der Wiederherstellungsversuch erfolgreich ist, beginnt FileAppender
erneut mit der Protokollierung.
Der Prozess ist vollständig automatisch und erstreckt sich nahtlos auf RollingFileAppender
. Siehe auch Anmutige Wiederherstellung.
Eine persönlichere Anmerkung ist, dass die Wiederherstellung der Wiederherstellung eine meiner Lieblings-Logback-Funktionen ist.
Sie können versuchen, die Klasse slf4j.Logger, insbesondere die Methoden info, debug, trace und andere Methoden zu erweitern und manuell nach dem verfügbaren Platz (über File.getUsableSpace ()) vor jedem Aufruf abzufragen.
Auf diese Weise brauchen Sie keine Anwendungsabhängigkeit
2 echte Optionen:
kaufe eine größere Festplatte und führe die Wartung manuell durch
+ - Protokollierung reduzieren
Festplatte voll ist wie OOM, Sie können nicht wissen, was 1 fehlschlägt, wenn Sie es fangen. Der Umgang mit nicht genügend Arbeitsspeicher (oder Festplatte) verhindert dies. Es kann viele Fälle geben, in denen zusätzlicher Speicherplatz benötigt wird und die Aufgabe fehlgeschlagen ist.