spring-boot
提供了几个可以在 application.properties
中应用的 logging.*
设置,例如:
logging.level.=DEBUG
logging.file=myfile.log
logging.path=d:/logs/
问题:生成了
myfile.log
文件,但在类路径内!为什么Spring没有考虑我提供的绝对路径?spring-boot
提供了几个可以在 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
之一。
将内容写入指定的日志文件。名称可以是确切的位置或相对于当前目录。
请参阅:http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html
您有一个矩阵,它不会混合两个属性@Sotirios Delimanolis - davidxxx对于Spring Boot v2.3.4及以上版本而言: 不是logging.file=...., 而是logging.file.name=....
对于 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 核心属性
logging.path=D:\logs\logfile.txt
app.properties
中配置这个设置。这是我一个项目中的实际应用。logging.path=../logs
logging.file=${logging.path}/fileName.log
我已经在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呢?