All Classes and Interfaces

Class
Description
基础操作日志记录,封装了记录前后触发逻辑 记录前先校验,若日志不符合自己的规范要求则不记录这条操作日志,并在运行日志中记录为什么不合规
日志异步执行器公共方法
异步操作日志记录器 仅仅把任务放入线程池
带缓冲的操作日志记录器(针对频繁记录单条操作日志做优化,批量操作不优化) 将日志放入 buffer 中,当 buffer 中日志达到一定数量 / 每隔一定时间,执行一次批量保存
默认的 value 转换器 对数组和可迭代的对象做了展平处理。 普通对象如DTO 则使用其 toString() 方法,如 XxxDTO(field1=1, field2=2,field3=3)
默认存储的
以 jdbc 记录操作日志记录,直接保存至数据库。适合微小型项目中,日志中心与业务组件同数据库。
JSON 日志格式化,以 Json 格式输出
键值对文本构建器
以日志文件记录操作日志,并以 OperationLogFormatter 作为日志格式。后续可由日志采集器收集、处理、转发至日志中心。
简单日志合并装饰器 操作多个对象记录一条操作日志,一般用于 OperationLogInterceptorAdapter 中
关掉操作日志
被操作对象 DTO
 
一次操作记录(包含所有操作日志中不可预料的值) 常用于批量场景
临时保存一次操作结果 DTO,常用于批量场景
可以判断操作结果的对象 如批量操作场景下返回的多个DTO,DTO中某个字段表示本次操作是否成功,实现该接口后 可以使用 OperationResult.of(boolean) 就可以判断本次批量操作是 成功 or 失败 or 部分成功
shoulder 定义的业务,传播
shoulder 定义的业务,传播。 变量命名:A_OR_B (if exist then A else then B) 推荐使用 NEW_OR_IGNORE、ALWAYS_NEW
可以获取操作详情的对象
创建操作日志注解 将该注解加在业务方法上,可以在被注解的方法执行前创建一个操作日志对象,在该方法、调用方法、以及他们创建的线程中使用用 OpLogContextHolder修改日志。并在该方法执行结束自动记录日志 该注解中的值后续可以修改 无法使用注解时,可以使用 OperationLogFactory.create(java.lang.String)
一些通用的操作,用于填充 Operation
操作日志注解 该注解仅可以加在类上,为目标类的所有加 @OperationLog 的方法提供字段默认值,所有字段均为选填
操作日志实体 (所有字段均为 protect: 方便使用者灵活扩展) 重要信息:操作时间、用户id、用户名称,IP、操作动作、被操作对象、操作结果、操作详情 其他信息:操作者终端标识、操作者使用的终端类型、追踪链路标识 traceId
操作日志实体构建器
操作日志格式化 不同的系统中希望的日志格式不一,有的希望是逗号分隔的键值对(如 nginx 默认日志格式),也有的人希望是 json 格式 可以通过扩展该接口来修改输出格式
操作日志记录器 子类要求:不能抛出异常,遇到异常需要 logger处理。因为抛出异常可能导致上层业务失败
日志记录拦截器 可以在日志记录前后做一些事情(对即将记录的日志进行数据清洗等工作) 用途举例: 空值填充:如日志中有 objectId 但是缺少 objectName,可以在这里查数据库填充。 数据转换:如日志中表示性别的部分为 0 或 1,需要转换成有意义的数据。 数据标准:批量记录时将10条合成为1条记录。 合法校验:过滤不符合预期的日志。 格式规范:将字段统一格式。 其他自定义业务规则.....
操作日志参数注解 将该注解加在带 OperationLog 的方法上,
OperationLog param.value 转换器,用于定制日志参数格式 PS 自定义扩展时可使用枚举继承该接口
转换器存储
自动将线程变量转移
日志校验器,若日志格式有一定要求则可以添加校验器。 如希望存储到 db 时,对字段长度有要求,因此需要校验 希望自定义系统中的日志格式,但担心开发者不按照规范走可以进行校验,如某些字段需要以特定前后缀结尾等
业务操作结果: 成功或失败:1表示成功,0表示失败,2表示部分成功; 正确或不正确:1表示正确,0表示不正确;
操作者信息 主要用于兼容不同框架,其中不带 default 的方法返回值不得为空 todo 【可选优化】certificate,密码类型;手机号,所属机构(租户编码),外部id,是否内部,扩展属性,用户状态。。
继承日志相关线程变量的 callable
操作日志上下文 这些参数决定本次操作日志如何记录
 
该类充当 OperationLogHolder 的角色。set日志对象后,可以通过该工具在同一线程内操作这个日志对象。 主要为了配合 OperationLog注解的使用 若应用希望扩展该类能力:允许以继承或组合方式调用类,并使用新的类,增加扩展能力。 todo 【优化-扩展性】获取上下文,若不存在时,默认策略异常 → 忽略?或者可配置?
操作对应业务方法/接口的入参
继承日志相关线程变量的 Runnable
用于对日志格式由一定要求时,与OperationLogValidator 配合使用在记录前进行校验
当前登录的用户信息作为业务操作者
操作日志格式默认校验类
默认日志格式化(逗号分隔的键值对) key1:"v1",k2:"v2"
有些操作(如定时任务)是非用户操作的,那么操作者就是系统了
操作者使用的终端类型
根据 terminal info 解析日志格式