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)
log4jspringboot项目启动 ,使用的druid数据源,log4j报错 log4j:WARN Please initialize the log4j system properly.(代码片