我有多个打包为war文件的spring boot应用程序(X,Y,Z)打包在我的雄猫上。我想将log4j2用作应用程序的日志记录系统。因此,要更改X的日志记录系统,我要在tomcat中将Sping Boot Propery的'logging.config'值设置为指向/tomcat/apps/X/WEB-INF/classes/log4j2-spring.properties。通过执行此记录,对于X可以正常工作。
闪回: 如果在application.properties中指定 logging.config = classpath:log4j2.properties ,那么当我们在Eclipse中以Java Application身份运行时,日志记录将起作用。但是,当我们将其作为WAR文件部署在tomcat上时,日志记录不起作用。 为了使其正常工作,我不得不将logging.config = {Path-to-myapp} /log4j2.properties放入tomcat / bin / setenv.bat中。
我的问题是,如果我有多个应用程序,那么如何为每个Spring Boot应用程序设置logging.config。
由于在创建ApplicationContext之前已初始化日志记录, 在Spring中无法通过@PropertySources控制日志记录 @配置文件。更改日志记录系统或 完全通过系统属性将其禁用。
答案 0 :(得分:1)
我已重命名了application.properties并通过进行以下更改来设置log4j配置:
public class MyApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
new SpringApplicationBuilder(MyApplication.class)
.properties("spring.config.name:new-app-properties-name")
.build()
.run(args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MyApplication.class).properties("spring.config.name: new-app-properties-name");
}
/**
* Set log4j2.xml location
*/
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.setInitParameter("logging.config", "/my-app/config/log4j2.xml");
super.onStartup(servletContext);
}
}
答案 1 :(得分:0)
我遇到了类似的问题,在这种情况下,我进行了以下更改:
这不是确切的解决方案,但在某些方面起作用。
对于每个服务,如果要执行此操作,则意味着必须创建每个文件和位置以及所有文件……并且在特定点后无法管理。
如之前的评论中所述,需要某种机制来以有条理和结构化的方式处理这种情况。