为什么Spring Boot不监听logging.path变量?

36

使用spring-boot 1.2.3.RELEASE。

我能够让spring-boot记录日志到特定目录的唯一方法是设置"log.file"属性, 如下所示:

logging.file=/var/log/app.log

但就我所了解的情况来看,根据文档,我应该这样做:

logging.file=app.log
logging.path=/var/log

但是它似乎没有听取logging.path属性,它只会将文件写入当前目录。

文档有误还是我漏掉了什么非常明显的东西?

另外,使用此设置,它仍将正确执行日志滚动,对吧?

4个回答

56

从文档中得知:

如果您想在控制台输出之外编写日志文件,您需要设置 logging.file 或 logging.path 属性。

Spring Boot 只考虑 file 或 path 属性,而不是两者同时存在。

这个页面列出了所有的 file 和 path 属性组合。


13
我们为什么不能同时更改文件名和路径呢?请问这个问题。 - McNinja
8
这很不直观,文档还暗示两种方法可以协同工作,因为它声明“下表显示了如何同时使用logging.*属性”。 - Kevin Bowersox
1
@McNinja:在指定 logging.file 时,你不仅可以给出文件名,还可以给出路径+文件名。 - Andrei Damian-Fekete
2
logging.path现在已经被弃用。Spring引入了logging.file.path以避免混淆。 - I'm_Pratik

6

变量pathfile可同时使用,方式如下(application.yml):

logging:
  path: /var/log/
  file: ${logging.path}app.log

作为结果,spring-boot会在文件/var/log/app.log中保留日志。

3

使用Spring 2.4.5

这是工作

logging.file.path=./log/
logging.file.name=${logging.file.path}mylog.txt

或者

logging.file.name=./log2/mylog.txt

总之,
logging.file.path=.             # write logs to the current directory
logging.file.path=/home/logs    # write logs to /home/logs
logging.file.path=/mnt/logdir   # write logs to /mnt/logdir

对于Spring Boot 1.x版本:设置logging.path


1
在 application.properties 中,只需使用以下变量。
logging.file.path={--your file path--}

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