2

所以我们使用 log4j 并希望在运行时更新它。我们不调用 spring 的 log4j 过滤器或 log4j 的 configure() 方法。正如许多文章所建议的那样,我们将 log4j.properties 放在类路径的根目录中,并且发生了某种巫术,使其被加载。

但是现在,我们要添加监视线程以在运行时刷新 log4j.properties。我看到了 configureAndWatch,我看到 spring 在它的 log4j 加载上有一个计时器参数,但是由于我们的 log4j 被如此隐式地加载,我如何启动监视线程?

问题 2 - 监视线程会更新分配的记录器吗?我们的很多记录器都加载到静态成员中。他们会得到水平变化吗?

4

1 回答 1

3

使用org.springframework.util.Log4jConfigurer

<util:list id="log4jProperties" list-class="java.util.ArrayList">
    <value>classpath:log4j.properties</value>
    <value>10000</value>
</util:list>

<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
    p:targetClass="org.springframework.util.Log4jConfigurer"
    p:targetMethod="initLogging"
    p:arguments-ref="log4jProperties" />

这将log4j.properties每 10 秒重新加载一次内容。

于 2013-05-22T13:07:35.990 回答