繁体   English   中英

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

[英]How to set logging.path for spring-boot apps?

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

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

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

Spring Boot 文档说明

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

然后描述logging.filelogging.path属性是如何工作的。 你应该只设置一个。

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

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

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

如果你设置了logging.path ,Spring Boot

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

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

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

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

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

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

在发布前测试了 2 分钟

对于 Spring Boot v2.3.4 及更高版本,肯定是:它不是logging.file=.... ,它是 logging.file。 姓名=....

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

logging.path=../logs

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

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

对于 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 核心属性

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM