java - 春季迁移后,带有“java.util.logging”的Tomcat日志停止工作
问题描述
将我的应用程序从 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 文件中,但我希望它在执行器/日志文件上工作;
谁能帮我解决这个问题?
太感谢了
解决方案
一个简单的:[snip] 没有出现在 spring.log 文件中。
记录器受到垃圾收集。编写您的日志记录语句,例如:
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);
}
3rd 方库可以从记录器中删除附加的处理程序。 打印记录器树,这样您就可以确定这是删除处理程序的问题还是级别问题。
我看到日志指令正常出现在 catalina.out 文件中,但我希望它在执行器/日志文件上工作;
控制台处理程序通常安装在根记录器上。根记录器不受垃圾收集的影响。
推荐阅读
- flutter - Flutter setState()不适用于GridView中的小部件
- azure-devops - AzureDevops 中的累积流程图 - 按区域路径
- javascript - 如何在 JavaScript 中访问 JSON 数组
- mysql - MySQL insert or update with nested query
- python - 如何直接从 python 脚本修改 Windows 10 路径变量
- node.js - 为什么第一个函数调用的执行速度比所有其他顺序调用快两倍?
- reverse-engineering - 逆向工程 MQL 文件
- python - AttributeError:“NoneType”对象没有属性“副本”
- spring-cloud-stream - Spring Cloud 函数与死信交换
- google-chrome - 开发者模式 Chrome 扩展通知适用于一台计算机,但不适用于另一台计算机