【Log4j】log4j 简单使用 + 详情

【Log4j】log4j 简单使用 + 详情

前言

log4j 简单使用,附上测试代码与.peoperties文件(也可以使用xml文件配置)。

一、log4j 简单使用

1.添加依赖

我这边使用maven依赖。

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

2.创建log4j.properties文件

# log4j.rootLogger=[level],[Appender1],[Appender2],[Appender3]....
# 这一句的意思就是设置日志输出级别以及输出目的地,可以设置多个输出目的地,以逗号分隔,输出目的地的详细设置为下面的appender
log4j.rootLogger = debug,CONSOLE,ERROR

# 输出信息到控制台
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
# 输出到控制台
log4j.appender.CONSOLE.Target = System.out
# 自定义的格式输出
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
# 自定义输出格式
log4j.appender.CONSOLE.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] %l: %m%n

# 输出ERROR 级别以上的日志到=D://logs/error.log
log4j.appender.ERROR = org.apache.log4j.DailyRollingFileAppender
# 指定输出文件路径
log4j.appender.ERROR.File =D:/logs/error.log
# 默认为true,意味着输出方式为追加,反之则为覆盖
log4j.appender.ERROR.Append = true
# 指定输出日志级别
log4j.appender.ERROR.Threshold = ERROR
log4j.appender.ERROR.layout = org.apache.log4j.PatternLayout
log4j.appender.ERROR.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] %l: %m%n

3.创建测试类

import org.apache.log4j.Logger;

/**
 * @author ChangSheng
 * @date 2020-03-19
 */
public class Log4jDemo {

    static Logger log = Logger.getLogger(Log4jDemo.class.getName());

    public static void main(String[] args) {
        log.trace("Trace Message!");
        log.debug("Debug Message!");
        log.info("Info Message!");
        log.warn("Warn Message!");
        log.error("Error Message!");
        log.fatal("Fatal Message!");
    }
}

4.查看结果

上面运行后长这样。

[DEBUG] 2020-03-19 17:22:25,761 com.shengjava.Log4jDemo.main(Log4jDemo.java:14): Debug Message!
[INFO ] 2020-03-19 17:22:25,762 com.shengjava.Log4jDemo.main(Log4jDemo.java:15): Info Message!
[WARN ] 2020-03-19 17:22:25,762 com.shengjava.Log4jDemo.main(Log4jDemo.java:16): Warn Message!
[ERROR] 2020-03-19 17:22:25,762 com.shengjava.Log4jDemo.main(Log4jDemo.java:17): Error Message!
[FATAL] 2020-03-19 17:22:25,763 com.shengjava.Log4jDemo.main(Log4jDemo.java:18): Fatal Message!

二、log4j 详情

1.日志级别

TRACE < DEBUG (调试) < INFO(消息) < WARN(警告) < ERROR(错误) < FATAL(致命)

2.Log4j三大组件

logger: 日志记录器,日志记录的核心类,用于输出不同日志级别的消息。

Appender: 日志输出目标,用于指定日志输出的目的地,如控制台、文件等等。

Layout: 日志格式化器,用于指定日志按照什么格式输出,是日志输出的格式化器。

2.1 Logger

日志记录器是Log4j使用的核心类,通过Logger类可以设置日志消息的输出级别、输出目的地以及输出格式。

一般使用 Logger log = Logger.getLogger(XXX.class),参数XXX为当前所在类的类文件

2.2 Appender

日志输出目标,用于指定日志输出的目的地,如控制台、文件等等。

共有如下种类:

  • ConsoleAppender:输出到控制台
  • FileAppender:输出到指定文件
  • DailyRollingFileAppender:每天产生一个单独的日志文件
  • RollingFileAppender :限制日志文件大小,每当达到大小限制时生成一个新的日志文件
  • WriterAppender:将日志信息以流格式发送到任意指定的地方

注意:不同的 Appender 有不同的属性值。

2.3 Layout

日志格式化器,用于指定日志按照什么格式输出,是日志输出的格式化器。

有如下几种:

  • HTMLLayout:以HTML表格形式布局输出;
  • PatternLayout:以自定义的格式输出;
  • SimpleLayout:简单格式,是包含日志信息的级别和信息字符串;
  • TTCCLayout:包含日志产生的时间、线程、类别等等信息

当使用自定义格式输出时,需要使用ConversionPattern自定义输出格式,Log4j采用的是C语言中Printf函数的格式,

格式:

ConversionPattern 日志信息,符号所代表的含义:

 -X号: X信息输出时左对齐;
 %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
 %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
 %r: 输出自应用启动到输出该log信息耗费的毫秒数
 %c: 输出日志信息所属的类目,通常就是所在类的全名
 %t: 输出产生该日志事件的线程名
 %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)
 %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
 %%: 输出一个"%"字符
 %F: 输出日志消息产生时所在的文件名称
 %L: 输出代码中的行号
 %m: 输出代码中指定的消息,产生的日志具体信息
 %n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行

参考

日志框架之Log4j:https://blog.csdn.net/xintonghanchuang/article/details/90905236