如何为 Spring Boot 应用程序设置 logging.path?

10

spring-boot 提供了几个可以在 application.properties 中应用的 logging.* 设置,例如:

logging.level.=DEBUG
logging.file=myfile.log
logging.path=d:/logs/

问题:生成了myfile.log文件,但在类路径内!为什么Spring没有考虑我提供的绝对路径?

请查看我的答案这里。对于更高版本的Spring Boot,已接受的答案已过时。 - Sathish
6个回答

18

Spring Boot文档指出:

默认情况下,Spring Boot只会将日志记录到控制台,不会写入日志文件。如果你想除了控制台输出外还写入日志文件,就需要设置logging.file或logging.path属性(例如在application.properties文件中)。

之后描述了logging.filelogging.path属性的工作原理,你应该只设置其中一个。

如果设置了logging.file,它将写入特定的文件。文档指出:

名称可以是确切的位置或相对于当前目录。

因此,您可能正在将其写入当前目录,这恰好与您的类路径相同。

如果设置了logging.path,Spring Boot

将spring.log写入指定的目录。名称可以是确切的位置或相对于当前目录。

检查您的当前目录是否为类路径,如果不希望它们混合,请相应地调整logging.filelogging.path之一。


因为这是文档所指示的: 将内容写入指定的日志文件。名称可以是确切的位置或相对于当前目录。 请参阅:http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html 您有一个矩阵,它不会混合两个属性@Sotirios Delimanolis - davidxxx

8

对于Spring Boot v2.3.4及以上版本而言: 不是logging.file=...., 而是logging.file.name=....


5

对于 spring-boot 版本 2.3.x 及以上:

logging:
  level:
    root: INFO
    my.app: INFO
  file:
    path: './logs/${spring.application.name}'
    name: ${logging.file.path}/my-app.log

logging.file.name:日志文件名称(例如,myapp.log),可以是绝对路径或相对于当前目录的相对路径。

logging.file.path:日志文件所在的位置,例如 /var/log

参考资料:Spring-Boot 核心属性


5
我不知道这是否仍然需要,但是您可以根据您的示例使用以下代码设置绝对路径。
logging.path=D:\logs\logfile.txt

你可以像这样更改文件名和路径。如果文件夹不存在,它将被创建。在Windows上,您必须使用 \ 作为分隔符,而在Linux和Mac上,您需要使用 / 作为分隔符。
记住:您不能在属性中同时拥有logging.file和logging.path。它要么是 .file 要么是 .path ... 在您的情况下是路径。
发布前2分钟进行了测试。

3
你可以在你的app.properties中配置这个设置。这是我一个项目中的实际应用。
logging.path=../logs

logging.file=${logging.path}/fileName.log

所以,您可以拥有两种属性,其中一种属性与另一种属性相关联。

0

我已经在application.properties文件中设置了logging.file=C:/usr/local/tomcat/logs/hib.log,并在类中进行了以下设置:

private static final Logger logger = LogManager.getLogger(ChargeMasterController.class);

logger.info("Total time taken for  is ---------------------------" + time  + " ms");

日志在logging.file所提到的路径中被很好地打印出来。

现在我想将我的日志打印到2个不同的文件中,分别用于2个不同的类(在同一个包中),我该如何在application.properties中设置2个logging.file呢?


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