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.file
或logging.path
属性(例如,在您的application.properties
中)。
application.properties
中的以下代码会将日志写入/home/user/my.log
:
logging.path = /home/user
logging.file = my.log
【讨论】:
仅当当前目录为/home/user
时(见上面的答案)【参考方案3】:
默认情况下,Spring Boot 不会将日志输出到任何文件。如果您想将日志写入文件(除了控制台输出),那么您应该使用 logging.file 或 logging.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日志深入分析