美文网首页
简单使用log4j日志

简单使用log4j日志

作者: ffewi | 来源:发表于2018-04-25 19:16 被阅读0次

    准备工作

    引入jar包:log4j-1.2.14.jar
    下载地址:http://ovt5bckd8.bkt.clouddn.com/log4j-1.2.14.jar

    拓展:编写一个自定义的占位符

    1. 建立MyLayout.java 继承 PatternLayout。
    package user;
    
    import org.apache.log4j.PatternLayout;
    import org.apache.log4j.helpers.PatternParser;
    
    public class MyLayout extends PatternLayout {
        public MyLayout(String pattern) {
            super(pattern);
        }
    
        public MyLayout() {
            super();
        }
    
        @Override
        protected PatternParser createPatternParser(String pattern) {
            return new MyParser(pattern);
        }
    }
    
    1. 建立MyParser.java 继承 PatternParser。
    package user;
    
    import org.apache.log4j.helpers.FormattingInfo;
    import org.apache.log4j.helpers.PatternConverter;
    import org.apache.log4j.helpers.PatternParser;
    import org.apache.log4j.spi.LoggingEvent;
    
    public class MyParser extends PatternParser {
    
        public MyParser(String pattern) {
            super(pattern);
        }
    
        @Override
        protected void finalizeConverter(char c) {
            if (c == 'T') {
                this.addConverter(new ExPatternConverter(this.formattingInfo));
            } else {
                super.finalizeConverter(c);
            }
        }
    
        private static class ExPatternConverter extends PatternConverter {
    
            public ExPatternConverter(FormattingInfo fi) {
                super(fi);
            }
    
            /**
             * 自定义的T占位符 显示内容
             */
            @Override
            protected String convert(LoggingEvent event) {
                return String.valueOf("┭┮﹏┭┮(" + Thread.currentThread().getId()
                        + ")");
            }
    
        }
    
    }
    
    

    编写配置文件 log.properties

    # 输出级别
    log4j.rootLogger=TRACE,Console,F
    
    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    # 自定义的占位符解析器,上面自己定义的解析类,默认为:org.apache.log4j.PatternLayout
    log4j.appender.Console.layout=user.MyLayout
    # 格式化输出
    log4j.appender.Console.layout.ConversionPattern=[%t>>%T][%-5p]-%d{yyyy-MM-dd HH:mm:ss} %C:%L %m%n
    
    log4j.appender.F=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.F.Threshold=DEBUG
    log4j.appender.F.File=D:/app.log
    log4j.appender.F.DatePattern='.'yyyyMMdd
    # 自定义的占位符解析器,上面自己定义的解析类,默认为:org.apache.log4j.PatternLayout
    log4j.appender.F.layout=user.MyLayout
    # 格式化输出
    log4j.appender.F.layout.ConversionPattern=[%t>>%T][%-5p]-%d{yyyy-MM-dd HH:mm:ss} %C:%L %m%n
    

    编写测试启动类 Start.java

    package main;
    
    import java.io.File;
    
    import org.apache.log4j.Logger;
    import org.apache.log4j.PropertyConfigurator;
    
    public class Start {
    
        public static void main(String[] args) {
            Logger log = Logger.getLogger(Start.class);
    
            PropertyConfigurator.configure(System.getProperty("user.dir")
                    + File.separator + "log.properties");
            log.trace("最低级的消息");
            log.debug("调试消息");
            log.info("普通消息");
            log.warn("警告消息");
            log.error("错误消息");
        }
    
    }
    

    控制台输出

    [main>>┭┮﹏┭┮(1)][TRACE]-2018-04-25 17:29:09 main.Start:15 最低级的消息
    [main>>┭┮﹏┭┮(1)][DEBUG]-2018-04-25 17:29:09 main.Start:16 调试消息
    [main>>┭┮﹏┭┮(1)][INFO ]-2018-04-25 17:29:09 main.Start:17 普通消息
    [main>>┭┮﹏┭┮(1)][WARN ]-2018-04-25 17:29:09 main.Start:18 警告消息
    [main>>┭┮﹏┭┮(1)][ERROR]-2018-04-25 17:29:09 main.Start:19 错误消息
    

    并且在上面配置的路径:D:/app.log 会有此文件,并且只会有DEBUG以上级别的日志,TRACE日志不会被记录进去。

    相关文章

      网友评论

          本文标题:简单使用log4j日志

          本文链接:https://www.haomeiwen.com/subject/funylftx.html