准备工作
引入jar包:log4j-1.2.14.jar
下载地址:http://ovt5bckd8.bkt.clouddn.com/log4j-1.2.14.jar
拓展:编写一个自定义的占位符
- 建立
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);
}
}
- 建立
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日志不会被记录进去。
网友评论