如何为spring-boot应用程序设置logging.path?

时间:2016-12-01 14:57:35

标签: java spring spring-boot

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

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

问题:生成myfile.log,但是在类路径内!为什么不考虑我的绝对路径?

6 个答案:

答案 0 :(得分:8)

Spring Boot documentation

  

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

然后介绍logging.filelogging.path属性的工作原理。你应该只设置一个。

如果设置了logging.file,它将写入该特定文件。文档说明

  

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

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

如果设置logging.path,Spring Boot

  

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

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

答案 1 :(得分:4)

我不知道是否还需要这个,但你可以根据你的例子用以下代码设置绝对路径

logging.path=D:\logs\logfile.txt

您可以像这样更改文件名和路径。如果该文件夹不存在则会创建该文件夹。在Windows上,您必须使用\作为分隔符,而在Linux和Mac上,您需要/作为分隔符。

请记住:您不能将属性中的logging.file和logging.path放在一起。它是.file OR .path ...在你的情况下是路径。

在发布前测试2分钟

答案 2 :(得分:1)

对于Spring boot v2.3.4及更高版本,请确保: 它是 logging.file = ...., 它是logging.file。名称 = ....

答案 3 :(得分:0)

您还可以在app.properties上进行此配置。那就是我的项目之一的工作方式。

logging.path=../logs

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

因此,您可以同时拥有这两个属性,而其中一个则引用另一个。

答案 4 :(得分:0)

我在logging.file=C:/usr/local/tomcat/logs/hib.log中设置了application.properties,并在课堂上进行了如下设置

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

答案 5 :(得分:0)

对于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 Core Properties