zoukankan      html  css  js  c++  java
  • log4j动态监听配置修改

    一般情况下,log4j的配置文件是log4j.properties。但是每次我们修改了配置文件之后程序并不会自动去加载,而需要我们去重启程序。那么怎么样才能让程序不用重启就监听到变化呢。代码如下:

    package taoget;
    
    import java.io.IOException;
    
    import org.apache.log4j.PropertyConfigurator;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.util.ResourceUtils;
    
    public class App {
        private final static Logger LOGGER = LoggerFactory.getLogger(App.class);
        
        public static void main(String[] args) throws IOException {
            String path=ResourceUtils.getFile("classpath:log4j.properties").getAbsolutePath();
            System.out.println(path);
            PropertyConfigurator.configureAndWatch(path, 1000 * 2);//2秒
            
            while(true){
                LOGGER.debug("--debug--");
                LOGGER.info("--info--");
                LOGGER.warn("--warn--");
                LOGGER.error("--error--");
                System.out.println("================================");
                try {
                    Thread.sleep(4000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    
    }

    1.定义一个循环,每4秒钟就打印debug、info、warn、error的日志

    2.获取文件使用了spring的ResourceUtils类。比较方便

    3.通过动态修改log4j.properties文件就能看到输出到控制台的日志级别会发生变化。

    4.重点是PropertyConfigurator.configureAndWatch。通过这个方法可以修改配置文件的名称和路径。

    附log4j.properties配置:

    ### globel
    log4j.rootLogger=DEBUG,console
    log4j.additivity.org.apache=true
    
    ### console
    log4j.appender.console=org.apache.log4j.ConsoleAppender
    log4j.appender.console.Target=System.err #打印出来就是红色的
    log4j.appender.console.Threshold=INFO
    log4j.appender.console.layout=org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c{2}.%M(%L) - %m%n
  • 相关阅读:
    数字滤波器
    PCL点云库:Kd树
    KNN算法与Kd树
    分布式锁与实现(一)——基于Redis实现
    Redis分布式锁的正确实现方式
    redis常用命令大全
    使用 Redis 实现排行榜功能
    RabbitMQ下的生产消费者模式与订阅发布模式
    java高级精讲之高并发抢红包~揭开Redis分布式集群与Lua神秘面纱
    Java进阶面试题大集合-offer不再是问题
  • 原文地址:https://www.cnblogs.com/duanjt/p/9956255.html
Copyright © 2011-2022 走看看