log4j 的使用和配置简介

1
2
3
4
5
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

级别

  1. OFF 关闭所有日志记录
  2. FATAL 严重的错误事件将会导致应用程序的退出
  3. ERROR 虽然发生错误事件,但仍然不影响系统的继续运行。
  4. WARN 会出现潜在错误的情形。
  5. INFO 消息在粗粒度级别上突出强调应用程序的运行过程。
  6. DEBUG 指出细粒度信息事件对调试应用程序是非常有帮助的
  7. ALL 开启所有的日志记录

级别优先级

OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL

使用

  1. 在pom.xml 中添加依赖
  2. 在项目的中添加log4j.properties

配置

log4.rootLogger

  1. log4j.rootLogger=日志级别,appender1, appender2, ….
  2. 注意,rootLogger默认是对整个工程生效
  3. 注意,如果只想对某些包操作,那么:log4j.logger.com.hutu=info, stdout,表示该日志对package com.hutu生效
  4. 注意,这样做可以区分dev/线上,也可以减小性能影响:if(log.isDebugEnabled()){log.debug();}

基础配置

Appender

属性 描述
layout Appender 使用 Layout 对象和与之关联的模式来格式化日志信息。
target 目的地可以是控制台、文件,或依赖于 appender 的对象
level 级别用来控制过滤日志信息
threshold Appender 可脱离于日志级别定义一个阀值级别,Appender 对象会忽略所有级别 低于阀值级别的日志。
filter Filter 对象可在级别基础之上分析日志信息,来决定 Appender 对象是否处理或忽 略一条日志记录。
所有appender

官方文档

AppenderSkeleton
AsyncAppender
ConsoleAppender

输出到控制台

1
2
3
4
5
6
7
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 = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n

DailyRollingFileAppender

每天产生一个文件

ExternallyRolledFileAppender
FileAppender

文件

JDBCAppender

将日志信息保存到数据库中

JMSAppender
LF5Appender
NTEventLogAppender
NullAppender
RollingFileAppender

文件大小到达指定大小,则新创建个文件

SMTPAppender
SocketAppender
SocketHubAppender
SyslogAppender
TenetAppender
WriterAppender

将日志信息以流格式发送到任意指定的地方

Layout

Layouts

DateLayout
HTMLLayout
PatternLayout
SimpleLayout
XMLLayout
日志格式化

模式转换符

转换字符 含义
c 使用它为输出日志分类,比如对于分类”a.b.c”,模式%c{2}会输出”b.c”
C 使用它输出发起记录日志请求的类的全名。比如对于类”cn.fondme.logger.XXClass”,模式%C{1}会输出”XXClass”
d 使用它输出记录日志的日期,比如%d{HH:mm:ss}
F 在记录日志时,使用它输出文件名
I 用它输出生成日志的调用者的地域信息。
L 使用它输出发起日志请求的行号。
m 使用它输出和日志事件关联的,由应用提供的信息。
M 使用它输出发起日志请求的方法名。
n 输出平台相关的换行符。
p 输出日志事件的优先级。
r 使用它输出从构建布局到生成日志事件所花费的时间,以毫秒为单位。
t 输出生成日志事件的线程名。
x 输出和生成日志事件线程相关的 NDC (嵌套诊断上下文)。
X 该字符后跟 MDC 键,比如 X{clientIP} 会输出保存在 MDC 中键 clientIP 对应的值。
% 百分号, %% 会输出一个 %。
格式修饰符
格式修饰符 左对齐 最小宽度 最大宽度 注释
%20c 20 如果列名少于 20 个字符,左边使用空格补齐
%-20c 20 如果列名少于 20 个字符,右边使用空格补齐。
%.30c 不适用 30 如果列名长于 30 个字符,从开头剪除。
%20.30c 20 30 如果列名少于 20 个字符,左边使用空格补齐,如果列名长于 30 个字 符,从开头剪除。
%-20.30c 20 30 如果列名少于 20 个字符,右边使用空格补齐,如果列名长于 30 个字 符,从开头剪除。

参考配置

分享到 评论