Skip to content

Commit 028b5d7

Browse files
committed
docs(log4j2): add example of springboot integrate log4j2
1 parent 59612da commit 028b5d7

2 files changed

Lines changed: 49 additions & 15 deletions

File tree

java/spring/spring.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@
7171
* [SpringBoot中使用Redis做页面缓存](https://github.com/zhonghuasheng/JAVA/commit/340d764e21902797630ea6a42136ec1fc909023b)
7272
* [SpringBoot + Redis Lua脚本实现分布式锁 + 解决电商超卖问题](https://github.com/zhonghuasheng/JAVA/blob/master/springboot/springboot-redis-lock/src/main/java/com/zhonghuasheng/redis/config/RedisRepository.java)
7373
* [SpringBoot启动后按顺序自动执行](https://github.com/zhonghuasheng/JAVA/tree/master/springboot/springboot-basic/src/main/java/com/zhonghuasheng/basic/runner)
74-
* [SpringBoot Starter自定义]()
74+
* [SpringBoot Starter自定义实现](https://github.com/zhonghuasheng/JAVA/tree/master/springboot/demo-spring-boot-starter)
75+
* [SpringBoot集成Log4j2实现日志的分类输出](https://github.com/zhonghuasheng/JAVA/tree/master/springboot/springboot-log4j2)
7576

7677
### SpringCloud
7778
> 微服务基础知识

plugins/log.md

Lines changed: 47 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
# 目录
1+
## 目录
22
* [导读](#导读)
33
* [Log的发展历程](#Log的发展历程)
4-
* [Log4j2介绍](#Log4j2介绍)
5-
* [Log4j2配置详解](#Log4j2配置详解)
6-
* [Log4j2应用](#Log4j2应用)
4+
* [Log4j2使用](#Log4j2使用)
5+
* [Log4j2常用配置](#Log4j2常用配置)
76

8-
## 导读
7+
### 导读
98
在日常的面试中,问到日志这块的很少,但是也会问到关于日志的选型和对比,主要考察你平时的总结。我这篇笔记呢主要是从Java中日志的发展历史,到流行的log4j2的常规使用和规范进行一个系统的总结。
109

11-
## Log的发展历程
10+
### Log的发展历程
1211
> 历史
1312
1. JUL (Java Util Logging) 早期的JDK内置的Log。包含Logger,Handler,Formatter三个模块。
1413
2. Log4j 由于JUL的开发不友好,Log4j推出之后迅速扩展开来。后来Log4j被Apache Foundation收入门下之后,由于理念不合,Log4j的作者Ceki离开了,后来开发了Slf4j和Logback。
@@ -19,9 +18,9 @@
1918

2019
> 原生Java日志组件长什么样
2120
Java日志API由以下三个核心组件组成:
22-
* Loggers: Logger负责捕获事件并将其发送给合适的Appender
23-
* Appenders: 也称为Handler,负责将日志事件记录到目标位置。在将日志事件输出之前,Appenders使用Layouts来对事件进行格式化处理
24-
* Layouts: 也称为Formatters,它负责对日志事件中的数据进行转换和格式化。Layouts决定了数据在一条日志记录中的最终形式。
21+
* Loggers: 记录器 Logger负责捕获事件并将其发送给合适的Appender
22+
* Appenders: 输出目的地 也称为Handler,负责将日志事件记录到目标位置。在将日志事件输出之前,Appenders使用Layouts来对事件进行格式化处理
23+
* Layouts: 日志布局 也称为Formatters,它负责对日志事件中的数据进行转换和格式化。Layouts决定了数据在一条日志记录中的最终形式。
2524
当Logger记录一个事件时,它将事件转发给适当的Appender。然后Appender使用Layout来对日志记录进行格式化,并将其发送给控制台、文件或者其它目标位置。另外,Filters可以让你进一步指定一个Appender是否可以应用在一条特定的日志记录上。在日志配置中,Filters并不是必须的,但可以让你更灵活地控制日志消息的流动。
2625

2726
> logback与log4j2比较
@@ -50,16 +49,50 @@ log4j2和logback各有长处,总体来说,如果对性能要求比较高的
5049
2. Tinylog是一个小巧的日志框架 https://tinylog.org/v2/
5150
3. 大佬Ceki的github https://github.com/ceki
5251

53-
## Log4j2介绍
52+
### Log4j2使用
53+
> Log4j2的两种配置方式
54+
* 通过`ConfigurationFactory`使用编程的方式进行配置
55+
* 通过配置文件配置,支持`xml``JSON``YAML``properties`等文件类型
5456

55-
## Log4j2介绍
57+
> Log4j2的三大组件
58+
* Logger 记录器
59+
```
60+
Loggers节点,常见的有两种:Root和Logger
61+
Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出
62+
Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等
63+
```
64+
* Appender 输出目的地
65+
```
66+
Appenders节点,常见的有三种子节点:Console, File, RollingFile
67+
console节点用来定义输出到控制台的Appender
68+
File节点用来定义输出到指定位置的文件的Appender
69+
RollingFile节点用来定义超过指定大小自动删除旧的创建新的的Appender
70+
```
71+
* Layout 日志布局
72+
```
73+
Layout日志布局参数很多,这里我只罗列常用的
74+
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level [%l] - %msg%n" />
75+
对齐方式,例如 %20c 右对齐, 最小宽度20,无最大宽度,不足20个字符则在数值前面用空格补足,超过20个字符则保留原信息。
76+
数据类型 转换字符 输出日志
77+
日期 %d{HH:mm:ss.SSS} 11:33:08.440
78+
线程名 %t main
79+
日志级别 %-5level FATAL
80+
日志名称 %logger{36} org.apache.logging.log4j.Log4j2Test
81+
日志信息 %msg fatal level log
82+
换行 %n 日志结束换行
83+
```
5684

57-
## Log4j2应用
85+
### Log4j2常用配置
86+
> Log4j2按模块名称来分开日志文件
5887
59-
# 参考
88+
### 代码示例
89+
https://github.com/zhonghuasheng/JAVA/tree/master/springboot/springboot-log4j2
90+
91+
## 参考
6092
* 为什么Log4j2优于Log4j、Logback https://www.jianshu.com/p/1ec9f5763c5c
6193
* log4j2.xml详解 https://www.jianshu.com/p/8ded6531ef76
6294
* log4j2系列 https://www.jianshu.com/nb/36706646
6395
* 论Java日志组件的选择 https://www.jianshu.com/p/85d141365d39
6496
* 2020 年了,Java 日志框架到底哪个性能好?——技术选型篇 https://www.cnblogs.com/xuningfans/p/12196175.html
65-
* Java Log 日志 https://www.jianshu.com/p/ca3d96e64607
97+
* Java Log 日志 https://www.jianshu.com/p/ca3d96e64607
98+
* Log4j2进阶使用(Pattern Layout详细设置) https://www.jianshu.com/p/37ef7bc6d6eb

0 commit comments

Comments
 (0)