在我的项目中,我使用Logback作为日志工具。我有以下课程
destroy()
现在,我取消部署servlet。发生异常时,Logback不会打印消息和堆栈跟踪。这是因为在Spring调用15:46:19,084 |-INFO in ch.qos.logback.classic.servlet.LogbackServletContextListener@7957fe56 - About to stop ch.qos.logback.classic.LoggerContext [default]
之前,Logback正在清理。取消部署servlet时,这是第一个(也是最后一个)日志行:
System.out.println("...");
我通过在destroy()
中添加<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>
来验证Logback是否先停止。
有什么方法可以解决这个问题吗?
我的依赖项:
spring-jcl
请注意,commons-logging
用于将slf4j
路由到logback
(将路由到jcl-over-slf4j
)。我没有使用interface Occupations {
duration: number;
id_entity: number;
id_job: number;
id_user: number;
salary: number;
start_time: number;
}
occupationDoc:AngularFirestoreDocument<Occupations>;
occupation: Observable<Occupations>;
。
答案 0 :(得分:5)
要禁用documented way以禁用注册>>> binascii.unhexlify(s)
b'Ao\x1cy\x18\xf8:O\x19"\xd8m\xf5\xe7\x83H'
:
您可以禁用自动安装 通过设置命名的LogbackServletContextListener web应用程序中的logbackDisableServletContainerInitializer web.xml文件。这是相关的片段。
LogbackServletContextListener
请注意,logbackDisableServletContainerInitializer变量也可以设置为Java系统属性和OS环境变量。最本地的设置具有优先级,即首先是web-app,第二是系统属性,最后是OS环境。
我想你可能想要编写自己的关机钩子,如果是这种情况并停止LoggerContext
答案 1 :(得分:0)
拿起Dovmo的答案。这一切都与订购有关。我在Tomcat 8.5.x上遇到了同样的问题。在细菌方面,初始化程序会执行addListener
,您无法控制监听程序。在关闭时,Tomcat反向迭代该列表,首先选择Logback侦听器:Spring不会记录任何内容。
自定义侦听器无法提供帮助,因为您无法预先添加它。在Tomcat上对我有用的是:
<listener>
<listener-class>ch.qos.logback.classic.servlet.LogbackServletContextListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>logbackDisableServletContainerInitializer</param-name>
<param-value>true</param-value>
</context-param>