[英]How to set logging.path for spring-boot apps?
spring-boot
提供了几个可以在application.properties
中application.properties
logging.*
设置,例如:
logging.level.=DEBUG
logging.file=myfile.log
logging.path=d:/logs/
问题:生成了myfile.log
,但在类路径中! 为什么 spring 不考虑我的绝对路径?
默认情况下,Spring Boot 只会登录到控制台,不会写入日志文件。 如果您想在控制台输出之外写入日志文件,您需要设置 logging.file 或 logging.path 属性(例如在您的 application.properties 中)。
然后描述logging.file
和logging.path
属性是如何工作的。 你应该只设置一个。
如果设置了logging.file
,它将写入该特定文件。 该文件指出
名称可以是确切位置或相对于当前目录。
因此,您可能正在写入当前目录,该目录恰好与您的类路径相同。
如果你设置了logging.path
,Spring Boot
将
spring.log
写入指定目录。 名称可以是确切位置或相对于当前目录。
检查您的当前目录是否不是您的类路径,如果您不希望它们混合,并相应地调整logging.file
和logging.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.