Spring Boot默认日志位置

53
在一个spring-boot应用中,我可以使用以下命令指定自定义的日志文件:java -jar spring-boot-app.jar --logging.file=/home/ubuntu/spring-boot-app.log。但是如果我没有指定日志文件,它会去哪里?我在以下任何文件夹中都找不到它:
/tmp/
/var/log/
~/

我没有spring-boot-starter-logging或其他日志依赖。

我希望有类似这样的东西,因为默认配置会运行一个嵌入式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。 - Wil
3个回答

46

Spring Boot使用Commons Logging作为所有内部日志记录,但保留底层日志实现的开放性。

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

引用自Spring Boot日志记录文档

默认日志配置将把消息回显到控制台中,因此除非您明确指定一个文件如您所述,否则它将保留在控制台中。


通过查看日志,我们可以指定一个日志文件,是否有一种方法可以按日志级别指定日志文件和错误文件? - Paresh

28

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

在application.properties中,只需设置:

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

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


7
logging.file已不建议使用。请改用logging.file.name。 - Rich Tillis

3

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

以下代码将把日志写入 /home/user/my.log

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

1
只有当前目录为 /home/user(请参见上面的答案)时才执行。 - nicobo
1
您一次只能添加一个属性。如果您添加logging.file,则忽略logging.path。因此,如果您想要特定的路径,请使用logging.path并省略logging.file。如果您想要重命名日志文件,则在文件中使用格式,例如/home/user/my.log(我尚未尝试过,但应该可以工作)。还有链接到文档以验证我的说法https://docs.spring.io/spring-boot/docs/2.1.13.RELEASE/reference/html/boot-features-logging.html。我个人使用yml格式完成了所有这些操作,如下所示logging: path:/var/service_name - Saurabh Gupta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接