Java 自定义日志注解中的队列处理

需求:

    通过方法头增加注解的形式记录日志,这个时候日志是要在怎样的一个时机写入数据库?一进入方法?方法执行结束?

实现:

    在这里采用切面加队列的方式来处理,下面我只简单的将关键词句贴出:

    1.自定义注解

@OperationLog(source = "",title ="我的订单")

    2.创建切面类

@Aspect
@Component
public class LogAspect {

    public LogAspect(){
        System.out.println("初始化日志切面 ");
    }

    private static final ThreadLocal<SysLog> sysLogThreadLocal = new NamedThreadLocal<SysLog>("ThreadLocal SysLog");//本地线程
...
}

    注:ThreadLocal本地线程,用于存放当前请求日志,根据省略掉的前后环绕产生的日志变化放入该线程。

    3.创建队列处理类

public class LogLinke {

    //定义并发非阻塞线程安全双向Deque缓存队列,存储待入库的日志记录  JDk7新特性
    public static ConcurrentLinkedDeque<SysLog> logList = new ConcurrentLinkedDeque<SysLog>();
...
}

    说明:根据第2步方法调用结束或产生异常时将日志添加到队列方法logList中,这边可以配个定时方法,限定当logList的队列达到300条或500条时写入数据库,先出先删。

    这边太懒只是剪了些较关键的代码,根据这个顺序自己脑补实现吧,想吐槽的憋着不用告诉我...


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值