配置log4j日志动态加载(不重启服务)

本文介绍了在Spring框架中两种不同的Log4j配置方法:一种是通过Spring提供的配置方式,另一种则是通过自定义Log4j配置类并在Spring中引入的方式。文章详细展示了如何设置这些配置,包括必要的XML配置片段及自定义类的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一:使用spring提供的配置
此方法在spring4.x的版本中都可以使用,但在Spring 4.2.1中已经将其标记为过时了.如果使用spring4.2.1以上的版本又会造成不兼容

Log4jConfigListener必须要在Spring的Listener之前。

web.xml

<!-- 设置由Sprng载入的Log4j配置文件位置 -->
<context-param> 
    <param-name>log4jConfigLocation</param-name> 
    <param-value>WEB-INF/classes/log4j.properties</param-value> 
</context-param> 
  <!-- Spring刷新Log4j配置文件变动的间隔,单位为毫秒 -->
<context-param> 
    <param-name>log4jRefreshInterval</param-name> 
    <param-value>10000</param-value> 
</context-param> 
 
<listener> 
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
</listener>



方法二:

使用log4j提供的方法自定义类并引入到spring中.
<!--配置log4j自动加载日志-->
<bean class="com.upcloud.web.util.Log4jConfig">
    <constructor-arg name="reload" value="true"/>
    <constructor-arg name="interval" value="60000"/>
</bean>


代码如下:
package com.upcloud.web.util;

import org.apache.log4j.PropertyConfigurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Log4jConfig {
    private boolean reload = true;
    private int interval = 60000;
    private static final Logger logger = LoggerFactory.getLogger(Log4jConfig.class);

    /**
     * log4j日志自动加载
     *
     * @param reload   是否开启自动加载
     * @param interval 自动加载时间(ms)
     */
    public Log4jConfig(boolean reload, int interval) {
        this.reload = reload;
        this.interval = interval;
        this.loadConfig();
    }

    public void loadConfig() {
        String log4jPath = Log4jConfig.class.getClassLoader().getResource("log4j.properties").getPath();
        logger.debug("log4j file path: " + log4jPath);

        // 间隔特定时间,检测文件是否修改,自动重新读取配置
        PropertyConfigurator.configureAndWatch(log4jPath, this.interval);
    }
}


评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值