春季迁移后,带有“java.util.logging”的Tomcat日志停止工作
Posted
技术标签:
【中文标题】春季迁移后,带有“java.util.logging”的Tomcat日志停止工作【英文标题】:Tomcat log with 'java.util.logging' stops working after spring migration 【发布时间】:2020-10-22 09:54:38 【问题描述】:将我的应用程序从 spring 1.5.21 迁移到 spring 2.0.9 后,当用户使用 tomacat 9 时,执行器/日志文件上的日志文件无法正常工作。
我正在使用库“java.util.logging.Level”。
一个简单的:
Logger.getLogger(Classname.class.getName())
.log(Level.SEVERE, "Teste: " + variable, ex);
没有出现在 spring.log 文件中。
这个文件是在 Spring boot 项目中的 .properties 文件中配置的,如下所示:
logging.path=$user.home/.path/logs/
但是文件中没有存储某些内容,例如“SPRING BANNER”或我的代码中的每个 Logger.getLogger 命令。
在 spring 1.5.21 中,spring.log 文件中出现了所有内容。
我使用 IDE Netbeans,并且在 netBeans 内,所有内容都已正确记录。 但是,如果我将应用程序的 .war 文件部署到 Tomcat 中,它不会出现在执行器/日志文件中(存储在 spring.log 上的上述路径上)。
在我的 pom.xml 中我改变了:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.21.RELEASE</version>
</parent>
到:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.9.RELEASE</version>
</parent>
附加信息: 我看到日志指令在 catalina.out 文件上正常显示,但我希望它在执行器/日志文件上工作;
谁能帮我解决这个问题?
非常感谢
【问题讨论】:
【参考方案1】:一个简单的:[snip] 没有出现在 spring.log 文件中。
Loggers are subject to garbage collection。编写您的日志记录语句,例如:
private static final String CLASS_NAME = Classname.class.getName();
private static final Logger logger = Logger.getLogger(CLASS_NAME);
...
if (logger.isLoggable(Level.SEVERE))
logger.log(Level.SEVERE, "Teste: " + variable, ex);
第 3 方库可以从记录器中删除附加的处理程序。 Print the logger tree 这样您就可以确定这是删除处理程序的问题还是级别问题。
我看到日志指令在 catalina.out 文件上正常显示,但我希望它在执行器/日志文件上工作;
控制台处理程序通常安装在根记录器上。根记录器不受垃圾回收的影响。
【讨论】:
以上是关于春季迁移后,带有“java.util.logging”的Tomcat日志停止工作的主要内容,如果未能解决你的问题,请参考以下文章