Log4j

Posted 火热火热7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Log4j相关的知识,希望对你有一定的参考价值。

    Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、 INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。

1.编写log4j.properties文件。log4j启动时,默认会寻找source folder下的log4j.xml配置文件,若没有,会寻找log4j.properties文件。然后加载配置。配置文件放置位置正确,不用在程序中手动加载log4j配置文件。如果将配置文件放到了config文件夹下,在build Path中设置下就好了。

1.1首先要定义日志的级别和输出方式,

log4j.rootLogger = 日志最低级别, 输出目的地1,, 输出目的地2。log4j.rootLogger = DEBUG, stdout, file

 

1.1.1日志的级别顺序为ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF,低于最低级别的日志不会输出

1.1.2上面定义的输出方式只是个名称,具体的定义在后面进行,一次可以定义多个输出方式

 

1.2输出方式有很多种,甚至可以发送邮件,每一种输出方式需要单独设置

log4j.appender.stdout = org.apache.log4j.ConsoleAppender

log4j.appender.file = org.apache.log4j.DailyRollingFileAppender

1.2.1org.apache.log4j.ConsoleAppender,控制台

1.2.2org.apache.log4j.FileAppender,文件

1.2.3org.apache.log4j.DailyRollingFileAppender,每天生成一个日志文件

1.2.4org.apache.log4j.RollingFileAppender,日志文件达到指定的体积是产生一个新日志文件

1.2.4org.apache.log4j.WriterAppender,将日志信息有流格式发送到指定位置

1.2.5org.apache.log4j.JDBCAppender,输出到数据库

 

1.3日志信息的格式是多种多样的,可以使用预定义的,也可以自定义信息格式

log4j.appender.stdout.layout = org.apache.log4j.TTCCLayout

1.3.1org.apache.log4j.htmlLayout, 以HTML表格形式布局

1.3.2org.apache.log4j.PatternLayout,以自定义方式布局

1.3.3org.apache.log4j.SimpleLayout,包含信息界别和信息内容

1.3.4org.apache.log4j.TTCCLayout, 包含时间,线程,类别等信息

 

1.4一个简单的配置文件如下

log4j.rootLogger = DEBUG, stdout

log4j.appender.stdout = org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout = org.apache.log4j.TTCCLayout

 

1.5总结一下就是

Logger类:完成日志记录,设置日志信息级别
Appender类:决定日志去向,终端、DB、硬盘
Layout类:决定日志输出的样式,例如包含当前线程、行号、时间

 

1.6一个比较完整的配置文件如下

### 设置###
log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

 

以上是关于Log4j的主要内容,如果未能解决你的问题,请参考以下文章

log4j怎样控制只输出自己写的代码的日志,不输出框架中的日志

Log4j反序列化远程代码执行漏洞(CVE-2019-17571)

由log4j远程执行漏洞说起

混合 log4j 1.x 和 log4j 2

Java 标准日志工具 Log4j 的使用(附源代码)

log4jspringboot项目启动 ,使用的druid数据源,log4j报错 log4j:WARN Please initialize the log4j system properly.(代码片