spring-boot 默认日志位置

Posted

技术标签:

【中文标题】spring-boot 默认日志位置【英文标题】:spring-boot default log location 【发布时间】:2015-11-03 13:33:58 【问题描述】:

spring-boot 应用程序中,我可以指定一个自定义日志文件

java -jar spring-boot-app.jar --logging.file=/home/ubuntu/spring-boot-app.log

但如果我不指定一个,它会去哪里?

我在以下任何文件夹中都找不到它:

/tmp/
/var/log/
~/

我确实没有spring-boot-starter-logging 或任何其他日志依赖项。

我希望有类似于 catalina.out 的东西,因为默认配置运行嵌入式 Tomcat:

INFO 10374 --- [main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8100 (http)

【问题讨论】:

我曾经这样做过 (nohup java -jar $PATH_TO_JAR > /var/log/myservice.log 2>&1 &) 但更喜欢使用 logging.file 的方式 【参考方案1】:

Spring Boot 对所有内部日志记录使用 Commons Logging,但保持底层日志实现是开放的。

为 Java Util Logging、Log4J、Log4J2 和 Logback 提供了默认配置。在每种情况下,记录器都预配置为使用控制台输出,还提供可选的文件输出。

来自Spring Boot logging documentation。

默认日志配置将在写入时将消息回显到控制台。 因此,除非您按照描述明确指定文件,否则它会保留在控制台中。

【讨论】:

通过查看日志,我们可以指定一个日志文件,有没有办法按日志级别指定日志文件和错误文件?【参考方案2】:

默认情况下,Spring Boot 只记录到控制台,不写入日志文件。如果要在控制台输出之外写入日志文件,则需要设置logging.filelogging.path 属性(例如,在您的application.properties 中)。

application.properties 中的以下代码会将日志写入/home/user/my.log

logging.path = /home/user
logging.file = my.log

【讨论】:

仅当当前目录为/home/user 时(见上面的答案)【参考方案3】:

默认情况下,Spring Boot 不会将日志输出到任何文件。如果您想将日志写入文件(除了控制台输出),那么您应该使用 logging.filelogging.path 属性(不是两者都)。

在application.properties中,只需设置:

logging.file=/home/ubuntu/spring-boot-app.log

这将在/home/ubuntu 下创建一个spring-boot-app.log 文件。

【讨论】:

logging.file 现在已弃用。改用 logging.file.name

以上是关于spring-boot 默认日志位置的主要内容,如果未能解决你的问题,请参考以下文章

让你的spring-boot应用日志随心所欲--spring boot日志深入分析

Liquibase maven:spring-boot启动时找不到更改日志位置

spring-boot logback日志常用配置解释

spring-boot中logback日志配置

Spring-Boot配置项

spring-boot4