当前位置: 首页 > 知识库问答 >
问题:

Spring Boot:在logback配置中使用Tomcat上下文参数

谢昂雄
2023-03-14

我有几个Spring Boot应用程序的实例部署在一个独特的Tomcat中。每个应用程序都配置了一个context.xml文件,该文件包含客户代码

<Context path="/myApp1" reloadable="false">
    <Parameter name="CUSTOMER_CODE" value="CUSTOMER1" />
</Context>
<property name="LOG_FILE" value="${ROOT_LOG}/${CUSTOMER_CODE}/myApp.log}"/>

有什么方法可以使这个日志返回配置工作吗?

在application.properties中定义的属性的使用效果很好(我将logback.xml重命名为logback-spring.xml)。在我看来,Spring boot在初始化日志记录之前并没有在Environnement中设置Tomcat上下文参数。有什么变通办法吗?谢了。

共有1个答案

仰钧
2023-03-14

我终于找到了一个解决方案,在日志初始化之前让我的客户代码在Spring Environment bean中可用。不是很漂亮,但很管用:

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application extends SpringBootServletInitializer {

  public static String APP_CUSTOMER_CODE;

  /**
   * Initialization of Spring Boot App with context param customer code
   */
  @Override
  protected SpringApplicationBuilder configure(final SpringApplicationBuilder builder) {
    final Map<String, Object> initProps = new HashMap<>();
    initProps.put("CUSTOMER_CODE", APP_CUSTOMER_CODE);
    return builder.properties(initProps).sources(Application.class);
  }

  /**
   * Method called before Spring Initialization
   */
  @Override
  public void onStartup(final ServletContext servletContext) throws ServletException {
    APP_CUSTOMER_CODE = servletContext.getInitParameter("CUSTOMER_CODE");
    super.onStartup(servletContext);
  }

}

在补充中,我必须在logback-spring.xml中声明一个springProperty标记以使用变量:

 <springProperty name="CUSTOMER_CODE" source="CUSTOMER_CODE"/>
 类似资料:
  • 我以前使用了类来从服务器的文件系统加载属性文件。我定义了以下bean: 是启动Tomcat时传递的参数,即。 对于webapp,我还有一个上下文文件: 如果参数指定的文件包含其他bean引用的属性,则使用文件中的值,否则使用上下文xml文件中的值。 这使得我可以在WAR中部署一组默认属性,如果需要,我可以指定文件来覆盖特定的值。 在使用这个新的属性占位符时,我如何让我的应用程序使用上下文参数? 谢

  • 我的问题是这样的--假设我有一个war文件,叫做My-APP-123.war。我想把它部署在Tomcat服务器(9.0.x)上,让它自动解包。 然后可以通过http://localhost:8080/my-app-123访问该应用程序 有没有一种方法,不重命名war文件,就可以从http://localhost:8080/my-app访问应用程序? 在此之前,我将说,我意识到最简单的解决方案是只命

  • 我正在尝试使用Groovy为我的独立Java应用程序配置Logback SMTP appender。我的logback.groovy文件内容如下: 但此配置不起作用,它在应用程序启动过程中失败: 我无法理解这条信息的原因。如果我从config-application中删除SMTP Appender配置部分,就可以正常工作并记录日志。如何使SMTP附加与groovy配置一起工作? 我的环境是:Ubu

  • 我知道在DispatcherServlet之外使用请求范围bean需要一些配置,并且已经阅读了http://docs.spring.io/spring/docs/4.0.x/spring-framework-reference/html/beans.html#beans-factory-scopes-oth,但是还没有成功: 对于Servlet3.0+,这可以通过WebApplicationIni

  • 我们的软件使用api(filenet p8),需要配置log4j。我们使用logBack和Spring Boot。我注意到,要在Spring Boot中使用log4j,我们必须排除logBack。这是不可能的。有没有办法在Spring Boot中并行运行log4j和logBack?谢啦

  • 在传统的web.xml类型配置中,您可以像这样配置上下文参数 web.xml 这是如何在Spring启动中实现的。我有一个需要参数的过滤器。 我使用的是,并包含了