W moim projekcie używam Logback jako narzędzia do logowania. Mam następującą klasęSpring @ Prestroy: Brak logowania, ponieważ logback zatrzymuje się zbyt szybko
Teraz, ja wdrażam servlet. Gdy wystąpi wyjątek, funkcja Logback nie drukuje komunikatu i nie wyświetla śladu stosu. Wynika to z faktu, że Logback oczyszcza się przed wywołaniem destroy()
przez Spring. Kiedy sprężenie serwlet, jest to pierwszy (i ostatni) wiersz dziennika:
15:46:19,084 |-INFO in [email protected]7fe56 - About to stop ch.qos.logback.classic.LoggerContext [default]
I sprawdzeniu, że Logback zatrzymuje pierwszy dodając System.out.println("...");
w destroy()
.
Czy można to naprawić?
Moi zależności:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>5.0.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>99-empty</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jcl</artifactId>
</dependency>
</dependencies>
Należy pamiętać, że spring-jcl
służy do trasy commons-logging
do slf4j
(który skieruje do logback
). Nie używam jcl-over-slf4j
.
Możliwy duplikat [sprężyny wyników @PreDestroy w zalogowaniu losowo nie zalogowaniu] (https://stackoverflow.com/questions/30426533/springs-predestroy-results-in-logging -randomly-not-logging) – niekname
Myślę, że to naprawdę ten sam problem. Każdy pomysł jak wyłączyć automatyczne zamknięcie z Logback ("LogbackServletContextListener") i ręcznie zamknąć Logback tak późno, jak to możliwe? Jestem w środowisku Tomcat/Spring. –
Również duplikat: https://stackoverflow.com/questions/17400136/how-to-log-within-shutdown-hooks-with-log4j2 Upewnij się, że czytasz odpowiedź użytkownika "DjDCH" – niekname