统一日志管理

matevip 2021-6-3 大约 2 分钟

# 一、日志使用

# 1.1 日志工具类引用

<dependency>
    <groupId>vip.mate</groupId>
    <artifactId>mate-starter-log</artifactId>
</dependency>
1
2
3
4

# 1.2 日志使用

# 使用示例

@Log(value = "字典表列表", exception = "字典表列表请求异常")
1

采用@Log注解

# 拦截器LogAspect

src/main/java/vip/mate/core/log/aspect/LogAspect.java 阅读此类下面的代码。

提示

小技巧:

vip.mate.core.* 表示这个包在核心模块里

vip.mate.core.log,表示这个模块属于log模块,一般引用方式是:mate-starter-log

# 二、两种日志模式

# 2.1 日志模式使用

src/main/java/vip/mate/core/log/event/LogListener.java 在这个类中有一段代码:

@Async
	@Order
	@EventListener(LogEvent.class)
	public void saveSysLog(LogEvent event) {
		if (event.getSource() instanceof CommonLog) {
			CommonLog commonLog = (CommonLog) event.getSource();
			// 发送日志到kafka
			printLog(commonLog);
			if (logProperties.getLogType().equals(LogType.KAFKA)) {
				commonLogProvider.sendCommonLog(commonLog);
			} else {
				sysLogProvider.set(commonLog);
			}
		} else {
			if (event.getSource() instanceof LoginLogDTO) {
				LoginLogDTO loginLog = (LoginLogDTO) event.getSource();
				// 发送日志到kafka
				printLog(loginLog);
				sysLogProvider.setLoginLog(loginLog);
			}
		}
	}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  • 如果logProperties.getLogType()的值设置为kafka的话,则将日志发送到Kafka中,这时候需要你的系统安装了kafka并配置好Kafka的连接此类

  • 默认为db的模块,则存取到本地数据库内,通过 feign 调用 mate-system 模块,进行日志记录。

# 2.2 补充说明

kafka的模式,目前未实现消费者这块,留给大家自行实现,微服务模块不是拆分越细越好,在业务量不大的情况下,还是以业务实现为主。

日志模块里还有一些日志抓取的方法和异步的实现方式,大家可以自行研究,相信感觉非常有收获。

日志模块也自动拦截正常日志和异常日志。前端界面展示如下:

# 登录日志

# 操作日志

# 异常日志

上次编辑于: 2021年6月6日 17:30
贡献者: matevip