1 回答

TA貢獻1828條經驗 獲得超13個贊
對于您的主要問題log4j2.xml
,您應該使用您的文件名,log4j2-spring.xml
因為這樣您就可以讓 Spring Boot 更好地控制 Log4j2。
好處之一是可以整合您缺少的變量。這可能是由于使用log4j2.xml
文件使得log4j2在spring boot之前初始化,而使用log4j2-spring.xml
makes Spring Boot來初始化log4j2。
正如SpringBoot 文檔所述:
如果可能,我們建議您使用 -spring 變體進行日志記錄配置(例如,logback-spring.xml 而不是 logback.xml)。如果使用標準配置位置,Spring 無法完全控制日志初始化。
對于你的第二個問題,因為你有 2 個記錄器......簡單地說:
?<Loggers>
? ? <Logger name="<package>.StatsWriter" level="info" additivity="false">
? ? ? <AppenderRef ref="StatsFile" />? ?<---- This one creates your file
? ? </Logger>
? ? <Root level="info">
? ? ? <AppenderRef ref="ConsoleAppender" />
? ? </Root>
? </Loggers>
關于你的第三個問題:
我對 application-"profile".yml 和 log4j2-spring.xml 的引用有點困惑。我不熟悉這些文件名的這些變體。這些變化(兩種文件類型)的意義是什么?
它的變體application-"profile".xxx
是允許 Spring Boot 根據這些配置文件采取不同配置的一種方式。您可以使用“dev”參數(shù)(本地開發(fā)數(shù)據庫)啟動應用程序,但在生產中您可以使用不同的參數(shù)。您可以控制如何通過不同的方式引導不同的配置文件,一種非常常見的方式是執(zhí)行您的應用程序,例如java -jar -Dspring.profiles.active=prod application.jar
與 相關log4j2-spring.xml
,如上所述,允許 Spring Boot 正確初始化 log4j2 (或您使用的任何日志記錄工具)。
添加回答
舉報