LLog:Spring轻量级请求日志监控组件,集成管理面板,支持多条件查询检索
开源地址
简介
LLog是基于AOP构建的请求日志记录和查询工具库,通过引入该工具库,完成配置,实现对接口请求日志的记录、查询检索等功能。
- 请求状态、时间、来源、耗时,请求参数,响应结果,作用接口记录
- 支持与鉴权服务结合,记录请求来源为用户ID
- 通过注解参数配置,实现对请求或响应数据的加密处理
- 支持多条件组合查询,支持参数模糊查询,时间排序
- 记录异常堆栈,接口异常
- 自动加入
trace_id,实现调用链条的追踪 - 不限制日志格式
- 计划支持微服务调用栈展示...

准备
在引入任何 Lucy系列依赖之前,需要完成jitpack镜像仓库的配置。
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://www.jitpack.io</url>
</repository>
</repositories>
集成
引入
在pom中引入,版本号与发行版本一致。
<dependency>
<groupId>com.gitee.lboot</groupId>
<artifactId>LLog</artifactId>
<version>0.0.8</version>
</dependency>
配置
1. 白名单配置
LLog日志管理页面访问,默认仅支持 127.0.0.1的请求来源访问(即支持本地访问),如果需要支持更多的访问来源,需要配置放行IP列表,通过,分隔。
# 日志请求白名单
llog.ip.allows=127.0.0.1,198.0.0.1
2. 数据库配置
LLog基于lucy-jpa构建数据库访问,需要完成对应数据库配置。
# MySQL
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/demo?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=demo
spring.datasource.password=
# JPA 允许结构替换
spring.main.allow-bean-definition-overriding=true
# 最小空闲连接数量
spring.datasource.hikari.minimum-idle=5
# 最长生命周期
spring.datasource.hikari.max-lifetime=120000
# 空闲连接存活最大时间,默认600000(10分钟)
spring.datasource.hikari.idle-timeout=50000
# 连接池最大连接数,默认是10
spring.datasource.hikari.maximum-pool-size=20
# 此属性控制从池返回的连接的默认自动提交行为,默认值:true
spring.datasource.hikari.auto-commit=true
# 连接测试查询
spring.datasource.hikari.connection-test-query=SELECT 1
# jpa 配置
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=false
spring.jpa.database=MYSQL
#自动将驼峰命名转换为小写和下划线 userId -> user_id
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
#不加这句则默认为myisam引擎
spring.jpa.database-platform= org.hibernate.dialect.MySQL5InnoDBDialect
3. 鉴权方案配置
LLog会记录用户ID和请求IP。如果需要获取到用户ID,则需要完成对鉴权服务的配置,拓展实现AuthService中的isLogin和getUid接口,或者直接引入lucy-rbac等实现方案。
推荐自定义实现
@Slf4j
@Service
@AllArgsConstructor
public class DemoAuthServiceImpl implements AuthService {
@Override
public Boolean isLogin() {
// return StpUtil.isLogin(); // 使用 SaToken
return AuthService.super.isLogin();
}
@Override
public String getUid() {
// return StpUtil.getLoginIdAsString(); // 使用 SaToken
return null;
}
}
使用
@ApiLog
通过自定义注解标记需要记录请求日志的接口,实现对接口请求的自动记录。
@ApiLog("追踪测试")
@GetMapping("trace")
@ApiOperation(value = "追踪ID测试")
public ResponseDTO<Object> testTrace(){
//
}
@ApiLog注解可配置项如下:
| 参数 | 类型 | 备注 |
|---|---|---|
| value | string | 默认为请求所属模块名词 |
| module | string | value 别名 |
| ignoreResponse | int | 记录数据是否忽略响应结果,1为是,0为否 |
| ignoreRequest | int | 记录数据是否忽略请求参数,1为是,0为否 |
管理面板
通过访问项目部署地址,进入日志查看管理页面。
http://localhost:8080/dashboard.html
支持多种条件的日志检索方式。
功能截图
1. 异常堆栈

2. 请求 & 响应数据
鼠标悬浮即可查看


3. 条件查询
条件组合查询
例如此处就是状态+接口方法组合查询,支持全部条件的组合。

关键词匹配检索
请求来源和请求参数都支持模糊查询匹配,支持条件查询与模糊查询组合使用

更新日志
0.0.8
- [特性] 更新了
lucy-spring-boot-starter版本依赖 - [新增] 支持了按照请求参数模糊匹配的功能
- [修复] 修复了重置页码不变化的bug
技术支持
LLog:Spring轻量级请求日志监控组件,集成管理面板,支持多条件查询检索的更多相关文章
- 【日志系统】Loki日志监控 - 入门初体验
使用Grafana+Loki+Promtail入门级部署分布式日志系统(windows环境) 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放 ...
- Oracle EBS 清除并发请求和(或)管理器数据 请求
请求说明:该请求可以清除平时提交的请求日志文件.并发管理器的日志文件.报表输出文件.并发请求和并发管理器进程的历史记录信息. 参数说明:(红色标注字段为必输项)1. 实体:ALL:清除请求历史记录. ...
- 46. Spring Boot中使用AOP统一处理Web请求日志
在之前一系列的文章中都是提供了全部的代码,在之后的文章中就提供核心的代码进行讲解.有什么问题大家可以给我留言或者加我QQ,进行咨询. AOP为Aspect Oriented Programming的缩 ...
- 一种轻量级的微信小程序日志监控的方法
今天一个活动要写个H5,明天一个功能要用小程序,天天都在写bug.用户反馈小程序用起来有问题还特么还不知道到底出了啥bug,反馈多了,老板要扣工资了!看来挖了太多坑不填也不行,程序异常还是要主动追踪, ...
- Spring Boot 2.0 教程 | AOP 切面统一打印请求日志
欢迎关注微信公众号: 小哈学Java 文章首发于个人网站 https://www.exception.site/springboot/spring-boot-aop-web-request 本节中,您 ...
- C#轻量级高性能日志组件EasyLogger
一.课程介绍 本次分享课程属于<C#高级编程实战技能开发宝典课程系列>中的第六部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集.整理 ...
- Spring Boot中使用AOP记录请求日志
这周看别人写的springboot后端代码中有使用AOP记录请求日志,以前没接触过,因此学习下. 一.AOP简介 AOP为Aspect Oriented Programming的缩写,意为:面向切面编 ...
- Spring Boot 自定义注解,AOP 切面统一打印出入参请求日志
其实,小哈在之前就出过一篇关于如何使用 AOP 切面统一打印请求日志的文章,那为什么还要再出一篇呢?没东西写了? 哈哈,当然不是!原因是当时的实现方案还是存在缺陷的,原因如下: 不够灵活,由于是以所有 ...
- Spring Boot 表单验证、AOP统一处理请求日志、单元测试
一.使用@Valid表单验证 于实体类中添加@Min等注解 @Entity public class Girl { @Id @GeneratedValue private Integer id; pr ...
- Spring Boot中使用log4j实现http请求日志入mongodb
之前在<使用AOP统一处理Web请求日志>一文中介绍了如何使用AOP统一记录web请求日志.基本思路是通过aop去切web层的controller实现,获取每个http的内容并通过log4 ...
随机推荐
- yb课堂之实战登陆模块开发整合Json Web Token《十》
开发登陆模块功能,并整合Json Web Token 开发登陆功能 LoginRequest.java UserMapper.xml UserMapper.java UserService.java ...
- Solo 开发者周刊 (第3期):如何打造令人惊艳的AI体验
这里会整合 Solo 社区每周推广内容.产品模块或活动投稿,每周五发布.在这期周刊中,我们将深入探讨开源软件产品的开发旅程,分享来自一线独立开发者的经验和见解.本杂志开源,欢迎投稿. 好文推荐 Plu ...
- Java JVM——12. 垃圾回收理论概述
1.前言 1.1 什么是垃圾? 在提到什么是垃圾之前,我们先看下面一张图: 从上图我们可以很明确的知道,Java 和 C++ 语言的区别,就在于垃圾收集技术和内存动态分配上,C++ 语言没有垃圾收集技 ...
- django信号中的条件判断不符合时如何提示错误并返回
在Django中,如果你在信号(Signal)处理函数中需要进行条件判断,如果条件不符合,你可以触发一个异常,并在视图或其他地方捕获这个异常,然后返回相应的错误提示. 以下是一个简单的例子,演示如何在 ...
- C练习_1005
题自:题目 1009: [编程入门]数字的处理与判断_C语言网 题目描述 给出一个不多于5位的整数,要求 1.求出它是几位数 2.分别输出每一位数字 3.按逆序输出各位数字,例如原数为321,应输出1 ...
- Java8 Stream流使用
Java8 Stream 流式编程 一.Lambda表达式 Lambda表达式也可以称为闭包,它是推动Java8发布的最重要新特性,lambda允许把函数作为一个方法参数传递给方法. 在Java8之前 ...
- SQL实战从在职到离职(1) 如何处理连续查询
书接上回,最近离职在家了实在无聊,除了看看考研的书,打打dnf手游,也就只能写写代码,结果昨晚挂在某平台的一个技术出售有人下单了,大概业务是需要帮忙辅导一些面试需要用到的SQL. 回想了下,在该平台接 ...
- 【SpringMVC】IDEA 不识别webapp的解决办法
参考地址: https://blog.csdn.net/omrleft123/article/details/70237205
- 强化学习:AC算法中为什么不使用Q函数来表示优势函数
强化学习中的策略梯度法(PG)不直接使用Q函数作为值函数来进行计算已经在Sutton的PG公式证明中提出,主要作用就是减少方差,因此使用优势函数进行计算.作为PG算法类中最常见的AC类算法有着较多的使 ...
- NVIDIA公司推出的GPU运行环境下的机器人仿真环境(NVIDIA Isaac Gym)—— 到底实现了什么功能,意义价值又是什么???
相关内容: NVIDIA公司推出的GPU运行环境下的机器人仿真环境(NVIDIA Isaac Gym)的安装--强化学习的仿真训练环境 ================================ ...