简单使用log4j日志

准备工作

引入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日志)