• 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
  • 相关阅读:
    Linux/shell: remove adjacent similar patterns
    Calculate difference between consecutive data points in a column from a file
    awk
    自定义Cordova插件(基础篇)
    npm init 命令生成package.json文件
    自定义Cordova插件详解
    Android 回退键监听
    Cordova结合Vue学习Camera
    解决悬浮的<header>、<footer>遮挡内容的处理技巧
    npm 是干什么的
  • 原文地址:https://www.cnblogs.com/duanjt/p/9956255.html
Copyright © 2020-2023  润新知