目录
一、log4j2 配置文件加载
log4j2 的配置文件只用 xml、json、jsn 三种格式,默认情况下由系统自动加载,系统加载 classpath 目录如下的配置文件:
- log4j-test.json 或者 log4j-test.jsn 文件
- log4j2-test.xml
- log4j-test.json 或者 log4j-test.jsn 文件
- log4j2.xml
加载优先级由上向下,且只加载其一。
二、log4j2 配置文件结构图
三、log4j2 配置文件说明
1、configration
字段 | 描述 |
---|---|
status | 日志级别 默认值为最高级别 OFF |
monitorInterval | 监控间隔,例如:monitorInterval=”600” 指log4j2每隔600秒(10分钟),自动监控该配置文件是否有变化,如果变化,则自动根据文件内容重新配置 |
2、Appenders 定义输出类型
1) Child
字段 | 描述 |
---|---|
Layout | 输出类型的模板、布局 |
Filters | 过滤器,过滤掉不需要的日志 |
2)Filters.ThresholdFilter
字段 | 描述 |
---|---|
level | 输出级别,例:level=”info”,日志级别为info或者以上(匹配的界别) |
onMatch | DENY/ACCEPT 禁止或者接受(是否接受匹配) |
onMismatch | DENY/NEUTRAL (是否接受其他高于level的级别) |
一般的组合为:
- onMatch=”DENY” onMismatch=”NEUTRAL “
- onMatch=”ACCEPT ” onMismatch=”DENY”
3、Loggers 注册日志输出对象
1) Logger 日志输出对象
字段 | 解释 |
---|---|
name | 输出对象名称 |
level | 日志级别 |
additivity | 是否冒泡,既在本层输出日志后是否需要在父对象上输出该日志,默认为 true |
代码说明
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
在 com.person.man 包下面或者类下面执行以下代码
- 1
- 2
- 3
- 1
- 2
- 3
四、log4j2 Appenders.child.Filter.ThresholdFilter 的使用
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
五、log4j2 实战示例
1、根据日志级别输出到不同文件,按日期进行封存日志
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
TimeBasedTriggeringPolicy
属性 | 解释 |
---|---|
interval | (integer)该属性是相对 RollingFile.filePattern 中的 %d{yyyy-MM-dd}值,例: filePattern=”xxx%d{yyyy-MM-dd}xx” interval=”2” 表示将2天一个日志文件; filePattern=”xxx%d{yyyy-MM-dd-HH}xx” interval=”1”表示一个小时一个日志文件 |
modulate | (boolean)以0点为边界进行偏移计算 |
六、log4j2 logger 加载规则
- logger name 相同时,以 level 级别高的为准
- logger name = “org” 会被 name=”org.xxx” 继承
- logger 中的 additivity=”true” 表示子日志所获得的日志也会在父日志中出现,即使 父日志的 level 远高于子日志的 level
- 当子日志 level 大于 父日志时,父日志只能接收到子日志过滤后的日志