Log4j 配置基础

一、介绍

Log4j是Apache的一个开源项目,通过Log4j,我们可以控制日志信息输出的目的地、日志的输出格式。

二、Log4j配置文件

Log4j的配置文件支持两种格式,一种是XML格式文件,一种是properties格式文件。一般都是使用properties格式文件。

1. 配置根Logger

父Logger配置(个人理解为:全局配置)
语法:log4j.rootLogger = [level], appenderName1,appenderName2,…

level为日志记录的优先级,由高到低分别是:(标黄为常用等级)

  • off (关闭): 最高级,用于关闭所有日志记录
  • fatal (致命): 指出每个严重的错误事件,将会导致应用程序退出
  • error (错误): 指出虽然发生错误事件,但仍不影响系统继续运行
  • warn (警告): 表明会出现潜在的错误情形
  • info (信息): 一般用在粗粒度级别上,强调应用程序的运行全程
  • debug (调试): 一般用在细粒度级别上,对调试应用程序非常有帮助
  • all (所有): 最低级别,用于打开所有日志记录

通过定义的级别,控制应用程序中相应级别的日志信息的输出。若定义INFO级别,则应用程序只输出INFO级别以上(包括INFO)的日志信息,INFO级别一下的信息不会输出。

子Logger配置(个人理解为:局部配置)
语法:log4j.logger.[java文件路径] = [level], appenderName1,appenderName2,… (局部)

例:log4j.logger.com.hex.schedule = debug,stout

除此之外还需要配置 log4j.additivity.[java文件路径] = true/false : 默认为true,该配置应用于控制台,若为true,控制台局部配置与全局配置都输出,若为false,参照局部的设置,局部若未配置控制台输出,则不输出

log4j.additivity.org.apache=false : 表示Logger不会在父Logger的appender里输出
(注:博主测试了下,使用以上语句配置没有任何效果,需要将org.apache改为项目下src里java文件路径)

2. 配置日志信息输出目的地Appender

语法:
log4j.appender.appenderName = fully.quelified.name.of.appender.class(填下面的Appender种类)log4j.appender.appenderName.option1 = value1
log4j.appender.appenderName.option2 = value2
log4j.appender.appenderName.option3 = value3

Appender种类:

  • org.apache.log4j.ConsoleAppender (输出到控制台)
  • org.apache.log4j.FileAppender (输出到文件)
  • org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
  • org.apache.log4j.RollingFileAppender (指定文件大小,文件大小到达指定大小时产生一个新的文件)
  • org.apache.log4j.WriterAppender (信息以流格式发送到任意指定地方)

(1)ConsoleAppender 选项
1. Threshold = 日志级别 : 指定日志消息的输出最低级别
2. ImmediateFlush = true/false : 默认值为true,表示所有消息都会被立即输出
3. Target = System.out/System.err : 指定输出控制台,默认为System.out(System.out以正常信息样式输出,System.err以错误的信息样式输出

(2)FileAppender 选项
1. Threshold = 日志级别 : 指定日志消息的输出最低级别
2. ImmediateFlush = true/false : 默认值为true,表示所有消息都会被立即输出
3. File = log.txt : 执行消息输出到log.txt文件(填输出的文件路径即可)。
4. Append = true/false : 默认值为true,即将消息增加到指定文件中;false指将消息覆盖指定的文件内容

(3)DailyRollingFileAppender 选项
1. Threshold = 日志级别 : 指定日志消息的输出最低级别
2. ImmediateFlush = true/false : 默认值为true,表示所有消息都会被立即输出
3. File = log.txt : 执行消息输出到log.txt文件(填输出的文件路径即可)。
4. Append = true/false : 默认值为true,即将消息增加到指定文件中;false指将消息覆盖指定的文件内容
5. DatePattern = ’.’yyyy-ww : 每周滚动一次文件,即每周产生一个新的文件

也可以指定按月、周、天、时、分生成文件。格式如下:

  • ’.’yyyy-MM : 每月
  • ’.’yyyy-ww : 每周
  • ’.’yyyy-MM-dd : 每天
  • ’.’yyyy-MM-dd-a : 每天两次
  • ’.’yyyy-MM-dd-HH : 每小时
  • ’.’yyyy-MM-dd-HH-mm : 每分钟

RollingFileAppender 选项
1. Threshold = 日志级别 : 指定日志消息的输出最低级别
2. ImmediateFlush = true/false : 默认值为true,表示所有消息都会被立即输出
3. File = log.txt : 执行消息输出到log.txt文件(填输出的文件路径即可)。
4. Append = true/false : 默认值为true,即将消息增加到指定文件中;false指将消息覆盖指定的文件内容
5. MaxFileSize = 100KB : 指定文件大小,可以时KB、MB、GB。
6. MaxBackupIndex = 2 : 指定可以产生的文件最大数。

3. 配置日志信息的布局

语法:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class(填下面的Layout种类)
log4j.appender.appenderName.layout.option1 = value1
log4j.appender.appenderName.layout.option2 = value2
log4j.appender.appenderName.layout.option3 = value3

Layout种类:

  • org.apache.log4j.HTMLLayout 以HTML表格形式布局
  • org.apache.log4j.PatternLayout 可以灵活地指定布局模式
  • org.apache.log4j.SimpleLayout 包含日志信息的级别和信息字符串
  • org.apache.log4j.TTCCLayout 包含日志产生的时间、线程、类别等信息

4. 配置输出格式

通过配置 log4j.appender.appenderName.layout.ConversionPattern 设置日志输出格式
设置参数:
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG、INFO、WARN、ERROR
%r 输出自应用程序启动到输出该log信息耗费的毫秒数
%c 输出所属类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,windows : “\r\n”, linux : “\n”
%d 输出日志时间点的日期货时间,默认格式为ISO8601,也可以在后面指定日期格式,例:%d{yyyy-MM-dd HH:mm:ss.SSS} 输出结果为2019-10-29 10:30:24.935
%l 输出日志时间的发生位置,包括类目名、发生的线程,以及在代码中的行数。例:TestLog.main(TestLog.java:10)
%x 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中
%% 输出一个“%”字符
%F 输出日志消息产生时所在的文件名称
%L 输出代码中的行号
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度和文本的对其方式。
例:%20c 输出所属类目名称,最小宽度为20字符,默认情况下右对齐
%-20c 输出所属类目名称,最小宽度为20字符,默认情况下左对齐
%.30c 输出所属类目名称,最大宽度为30字符,如果类目名称长度大于30字符时,会将左边多出的字符截掉,但是小于的话不会有空格
%20.30c 输出所属类目名称,如果类目名称长度小于20时,左边补空格,并且右对齐,如果名称大于30字符,将左边多出的字符截掉

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值