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