首先对 logging.file.namelogging.file.path 进行一下说明,但是它俩的区别并不是本文的重点。

1、logging.file.name 设置具体输出的日志名称,可以是绝对路径或者基于当前运行目录的相对路径,例如:logging.file.name=app.loglogging.file.name=/var/log/hello-service/app.log

2、logging.file.path 设置输出的日志被写入到的目录,默认文件名为 spring.log,例如:logging.file.path=/var/log/hello-service

3、如果你两个都同时设置,则以 logging.file.name 为准。

本文重点,是推荐使用 logging.file.name,原因是因为这里涉及到另外一个知识点,那就是 spring 的 actuator 中的 logfile 接口(例如:http://localhost:8080/hello-service/actuator/logfile 可以直接获取日志文件,比较不错的是它还支持使用 HTTPRange 头来检索日志文件的部分内容)。

如果你只设置了 logging.file.name,不论你实际的文件名设置为什么,这个接口都可以正常获取日志文件(因为接口它能明确知道日志文件的位置路径)。

如果你只设置了 logging.file.path,并且没有在自定义的 logback.xml 文件重新定义输出的具体日志文件的名称(也就是仍然使用默认的spring.log),那么 logfile 接口也是能正常获取日志文件,因为它是按照默认文件 spring.log 获取日志的。但是但凡你在 logback.xml 中重新定义了输出的日志文件名(例如输出的日志文件为 hello-service.log),则你使用 actuator/logfile 接口就会或得一个404,因为此时框架并不知道你的真实日志文件叫什么,它去读取 spring.log 又读不到(因为你改名了)。

so,建议直接使用 logging.file.name,清晰明了。


(END)

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐