【问题标题】:How to set logging.path for spring-boot apps?如何为 spring-boot 应用程序设置 logging.path?
【发布时间】:2017-04-16 06:38:47
【问题描述】:

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

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

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

【问题讨论】:

  • 查看我的回答here。对于更高版本的 Spring Boot,接受的答案已经过时。

标签: java spring spring-boot


【解决方案1】:

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 之一。

【讨论】:

【解决方案2】:

我不知道这是否仍然需要,但您可以根据您的示例使用以下代码设置绝对路径

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

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

请记住:您的属性中不能同时包含 logging.file 和 logging.path。它是 .file 或 .path ...在您的情况下是路径。

发布前 2 分钟测试

【讨论】:

    【解决方案3】:

    对于 Spring boot v2.3.4 及以上版本: 它是 NOT logging.file=.... , 它是 logging.file.name=....

    【讨论】:

      【解决方案4】:

      您也可以在您的app.properties 上进行此配置。这就是它在我的一个项目中的工作方式。

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

      因此,您可以同时拥有两个属性,并且一个引用另一个。

      【讨论】:

        【解决方案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 Core Properties

        【讨论】:

          【解决方案6】:

          我在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

          【讨论】:

            猜你喜欢
            • 2015-07-24
            • 2022-08-18
            • 2015-06-28
            • 2017-08-03
            • 1970-01-01
            • 2016-08-18
            • 2014-01-31
            相关资源
            最近更新 更多