slf4j、log4j日志级别与配置

时间:2025-04-22 08:49:39

个人能力有限,仅供个人记录与大家思路参考,难免有错误或不当之处,如发现错误之处请指出,谢谢!

日志共有8个级别(优先级从高到低,优先级越高表示过滤的log信息越多,显示的log信息越少):

级别名称 含义 级别
OFF 关闭日志输出 最高
FATAL 输出FATAL及以上级别日志(FATAL)
ERROR 输出ERROR及以上级别日志(FATAL、ERROR)
WARN 输出WARN及以上级别日志(FATAL、ERROR、WARN)
INFO 输出INFO及以上级别日志(FATAL、ERROR、WARN、INFO)
DEBUG 输出DEBUG 以上级别日志(FATAL、ERROR、WARN、INFO、DEBUG)
TRACE 输出TRACE以上级别日志(FATAL、ERROR、WARN、INFO、DEBUG、TRACE)
ALL 输出所有类型日志(ALL、FATAL、ERROR、WARN、INFO、DEBUG、TRACE) 最低

Log4j建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。  日志记录器(Logger)的行为是分等级的:

 日志记录器(Logger)是日志处理的核心组件。log4j具有5种正常级别(Level)。:

static Level DEBUG 指出细粒度信息事件对调试应用程序是非常有帮助的。
static Level INFO 表明 消息在粗粒度级别上突出强调应用程序的运行过程。
static Level WARN WARN level表明会出现潜在错误的情形。
static Level ERROR ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行。
static Level FATAL FATAL level指出每个严重的错误事件将会导致应用程序的退出。

另外,还有两个可用的特别的日志记录级别:

static Level OFF 最高等级,用于关闭所有日志记录。
static Level ALL 最低等级,用于打开所有日志记录。

log配置文件主要包含三个节点:Logger、Appender、Layout。

Logger 配置打印日志的级别,输出日志的程序范围,以及关联的Appender
Appender 配置日志的输出形式,输出策略等
Layout 配置每条日志的内容格式

配置文件,示例:

    #配置根节点
    =INFO,Log4jConsole,Log4jFile
    #log不向上层传递
    =false
    #设置变量,保存路径 ${}/logs
    logDir=D:/tomcat/logs
     
    #控制台输出
    .Log4jConsole=.
    .=INFO
    .=true
    .=
    #输出格式
    .=.
    .=[%p][%d{yyyy-MM-dd HH:mm:ss,SSS}] [%c:%M:%L] %m%n
     
    #文件输出
    .Log4jFile=.
    .=INFO
    .=true
    .=true
    .=${logDir}/
    .='.'yyyy-MM-dd
    #输出格式
    .=.
    .=[%p][%d{yyyy-MM-dd HH:mm:ss,SSS}] [%c:%M:%L] %m%n

Log4j2过滤日志级别配置

一. 属性详解:onMatch和onMismatch都有三个属性值,分别为ACCEPT(接受)、DENY(拒绝)和NEUTRAL(中立)

onMatch="ACCEPT"匹配该级别及以下级别;
onMatch="DENY"不匹配该级别及以下级别;
onMatch="NEUTRAL" 该级别及以下的,由下一个filter处理,如果当前是*别,则表示匹配该级别及以下
onMismatch="ACCEPT" 匹配该级别以上级别;
onMismatch="DENY" 不匹配该级别以上的级别;
onMismatch="NEUTRAL" 该级别及以上的,由下一个filter处理,如果当前是最低级别,则不匹配该级别以上的

二. 单一应用

1. 匹配低于或等于xxx的级别

<ThresholdFilter level="xxx" onMatch="ACCEPT" onMismatch="DENY"/>

2.匹配高于xxx的级别

<ThresholdFilter level="xxx" onMatch="DENY" onMismatch="ACCEPT"/>

三. 组合应用

<ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>