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”参数(本地开发数据库)启动应用程序,但在生产中您可以使用不同的参数。您可以控制如何通过不同的方式引导不同的配置文件,一种非常常见的方式是执行您的应用程序,例如java -jar -Dspring.profiles.active=prod application.jar
与 相关log4j2-spring.xml
,如上所述,允许 Spring Boot 正确初始化 log4j2 (或您使用的任何日志记录工具)。
添加回答
举报