spring-boot - Spring Boot and Logging with External Tomcat 仅输出启动日志
问题描述
我的 Spring boot 2 应用程序在运行时未显示任何日志消息。我只能看到启动日志。此应用程序在生产服务器中部署为 WAR,我将日志配置为输出到文件:
logging.file = app.log
logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
logging.pattern.console= %d{yyyy-MM-dd HH:mm:ss} - %msg%n
在我的本地,我可以看到我在代码中包含的任何调试消息,但在服务器中我看不到。我只看到应用程序启动跟踪。
我生成文件的配置是由官方指南提供的。以及 app.war 中的 tomcat 依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
你知道发生了什么吗?它很奇怪。日志文件正在服务器中生成(我们将其部署在 docker 容器中),但应用程序运行后,不再向该文件输出日志。
解决方案
默认情况下,Spring Boot 日志记录在 INFO 级别,其中应包括 ERROR。
根据 Spring boot logging guide 79.1.1 Configure Logback for File-only Output
如果要禁用控制台日志记录并仅将输出写入文件,则需要一个logback-spring.xml
可以导入file-appender.xml
但不可以的自定义console-appender.xml
,如以下示例所示:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<root level="INFO">
<appender-ref ref="FILE" />
</root>
</configuration>
您还需要添加logging.file
到您已经添加的 application.properties。
推荐阅读
- java - System.out.println(dog1.getName()); 返回空
- angular - 模板解析错误:意外的结束标记“div”。当标签已被另一个标签关闭时,可能会发生这种情况
- node.js - 缺少路径参数的自定义错误代码 - 无服务器
- c++ - 编译一些与 CRTP 和名称隐藏相关的代码时遇到问题
- rest-client - Quarkus Rest Client 永远不会超时
- javascript - VueBootstrap 和 New VeeValidate 无法制作自定义模态
- android - 错误:找不到资源样式/Theme.AppCompat.Light.NoActionBar
- bash - 在 shell 脚本中处理 docker 事件
- java - jGRASP 楔形错误:找不到命令“bcc32”
- php - 样式表未使用 php readfile() 加载