如何在Web应用程序启动时设置log4j路径?

时间:2015-02-28 15:29:13

标签: java spring log4j spring-boot log4j2

我有一个log4j2.xml配置文件,它应该在java代码启动Web应用程序期间动态设置日志记录路径。

log4j2.xml:

<Properties>
    <property name="path">{web:attr.logpath}</property>
</Properties>

因此我有以下配置文件:

@Configuration
@Order(Ordered.HIGHEST_PRECEDENCE)
public class LogConfig extends SpringBootServletInitializer {
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        servletContext.addListener(Log4jConfigListener.class);
        servletContext.setAttribute("logpath", "d:/testpath");
        super.onStartup(servletContext);
    }
}

问题:当输入onStartup()时,log4j初始化已经结束,我收到log4j路径无效的消息。

如何在设置属性后延迟log4j初始化?

1 个答案:

答案 0 :(得分:0)

Spring使用日志记录。 Log4j必须首先初始化,否则最终会导致spring无法登录。通常,这将使用Log4j的Log4jServletContextListener并在web.xml中将logpath设置为config param来处理。

请参阅http://logging.apache.org/log4j/2.x/manual/webapp.html