Przeprowadzamy migrację do logback z log4j dla kilku aplikacji internetowych. W zamknięciu naszej aplikacji możemy obecnie nazywamy:Czy muszę opróżniać zdarzenia podczas zamykania przy użyciu funkcji logback?
org.apache.log4j.LogManager.shutdown();
który ma opróżnić cały rejestrowanie transmisji asynchronicznej i zamknięcie wszystkich zasobów zewnętrznych (pliki, gniazda).
Czy jest coś podobnego w logbackach, czy w przypadku wyłączenia jest ono automatycznie spłukiwane?
Mike
Ciekawe pytanie - że nigdy nie myślałem o tym. Ponieważ musisz jawnie skonfigurować log4j do wyjścia bufora, założyłbym, że zamknięcie może być konieczne tylko w tym przypadku. Domyślam się jednak, że bufor slf4j domyślnie. –
logback opróżnia się po każdym logowaniu, więc nie ma potrzeby jawnego wywoływania stop(), chyba że robisz coś fajnego. –
@DavidRoussel To stwierdzenie skłoniło mnie do sprawdzenia [Logback Appenders] (http://logback.qos.ch/manual/appenders.html). Rzeczywiście: _By domyślnie każde zdarzenie dziennika jest natychmiast przepłukiwane do podstawowego strumienia wyjściowego. To domyślne podejście jest bezpieczniejsze w tym sensie, że rejestrowanie zdarzeń nie zostanie utracone w przypadku, gdy aplikacja zostanie zamknięta bez odpowiedniego zamknięcia aplikacji. Jednak w przypadku znacznie zwiększonej przepustowości rejestrowania możesz ustawić właściwość directFlush w podstawowym Encoderze na wartość false. Enkodery, aw szczególności LayoutWrappingEncoder, opisane są w osobnym rozdziale._ –