Wir migrieren Logbuch von Log4j für mehrere Web-Anwendungen. Bei der Abschaltung unserer Anwendung nennen wir zur Zeit:Muss ich Ereignisse beim Herunterfahren mit Logback leeren?
org.apache.log4j.LogManager.shutdown();
, die angeblich alle asynchrones Logging spülen und schließen Sie alle externen Ressourcen (Dateien, Sockets).
Gibt es etwas Ähnliches im Logback oder wird es beim Herunterfahren automatisch gespült?
Mike
Interessante Frage - ich würde nie wirklich dachte darüber nach. Da Sie log4j explizit für die Pufferausgabe konfigurieren müssen, wäre ich davon ausgegangen, dass das Herunterfahren nur in diesem Fall aufgerufen werden muss. Ich glaube, dass slf4j standardmäßig gepuffert ist. –
Logback flushes nach jeder Log-Anweisung, so dass es keinen expliziten stop() -Aufruf gibt, es sei denn, Sie tun etwas Funky. –
@DavidRoussel Diese Aussage brachte mich dazu, [Logback Appenders] (http://logback.qos.ch/manual/appenders.html) nachzuschlagen. In der Tat: Standardmäßig wird jedes Log-Ereignis sofort in den zugrunde liegenden Output-Stream geleert. Dieser Standardansatz ist sicherer in dem Sinne, dass Protokollierungsereignisse nicht verloren gehen, wenn Ihre Anwendung beendet wird, ohne die Appender ordnungsgemäß zu schließen. Um jedoch den Protokollierungsdurchsatz erheblich zu erhöhen, empfiehlt es sich, die Eigenschaft sofortFlush des zugrunde liegenden Encoders auf false zu setzen. Encoder und insbesondere LayoutWrappingEncoder werden in einem separaten Kapitel beschrieben. _ –