前言
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.slensoft.Log4jDemo.main(Log4jDemo.java:14): Debug Message!
[INFO ] 2020-03-19 17:22:25,762 com.slensoft.Log4jDemo.main(Log4jDemo.java:15): Info Message!
[WARN ] 2020-03-19 17:22:25,762 com.slensoft.Log4jDemo.main(Log4jDemo.java:16): Warn Message!
[ERROR] 2020-03-19 17:22:25,762 com.slensoft.Log4jDemo.main(Log4jDemo.java:17): Error Message!
[FATAL] 2020-03-19 17:22:25,763 com.slensoft.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