Log4j


日志系统

日志是维护项目的有利工具,代替System.out.println()来定位BUG

JDK有自带的 JUL(java util logging) 日志系统,并不需要引用别的类库,但这并不满足我们的需求,所以我们用log4j代替,注意的是Apache为了让众多的日志工具有一个相同操作方式,实现了一个通用日志工具包:commons-logging,所要使用log4j就先得有commons-logging支持

日志的三大组件

Logger:日志记录器

Appender:日志输出目的地

Layout:控制输出流的格式

Logger官方建议使用四个级别,由低到高分别是:

级别解释
ERROR发生错误事件,但不影响系统继续运行
WARN警告潜在错误的情形
INFO打印你感兴趣的或者重要的信息,用于生产环境
DEBUG主要用于开发过程中打印一些运行信息

布局格式化日志

类别解释
HTMLLayoutHTML形式
PatternLayout指定布局模式
SimpleLayout日志级别和信息字符串
TTCCLayout日志产生的时间、线程、类别等

附加器输出地方

分类解释
ConsoleAppender输出到控制台
FileAppender输出到文件
DailyRollingFileAppender输出到每天生成的新文件
RollingFileAppender文件大小到达指定尺寸的时候产生一个新的文件
JDBCAppender保存到数据库中
WriterAppender以流格式发送到任意指定的地方

基本使用

1 导包

  • log4j-1.2.17.jar
  • commons-logging-1.2.jar

2 src下新建log4j.properties

# 配置根logger,预定义附加器
log4j.rootLogger = WARN, console, file

# 配置console附加器
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %d{yyyy/MM/dd HH:mm:ss} %p [%c -Row:%L] --> %m%n

# 配置file附加器
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File = C\:\\Users\\Howl\\Desktop\\log4j.txt
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = %d{yyyy/MM/dd HH:mm:ss} %p [%c -Row:%L] --> %m%n
log4j.appender.file.DatePattern ='.'yyyy-MM
log4j.appender.file.Threshold = ERROR

3 测试

public static void main(String[] args) {
    
    //获取Logger对象的实例 
    Logger logger = Logger.getLogger(Log4jTest.class);
        
    //日志报错
    logger.debug("这是debug");
    logger.info("这是info");
    logger.warn("这是warn");
    logger.error("这是error");
    logger.fatal("这是fatal");
}

4 打印

2019/12/19 12:16:05 WARN [logging.Log4jTest -Row:22] --> 这是warn
2019/12/19 12:16:05 ERROR [logging.Log4jTest -Row:23] --> 这是error
2019/12/19 12:16:05 FATAL [logging.Log4jTest -Row:24] --> 这是fatal

参考Log4J日志整合及配置详解