关于使用druid监控登录用户执行的sql

richardsosa 发布于 2016/09/09 12:24
阅读 804
收藏 0

@wenshao 你好,想跟你请教个问题:

目前手头一个很老的项目想使用druid,已经配置了DruidWebStatFilter,每个url执行的sql也可以看到,session监控中也可以看到sessionid和对应的用户名。

请问有什么办法让session和对应sql关联起来显示呢?想实现对应的用户访问了哪些url和具体执行sql。

请问能做到不同用户区分显示么

加载中
0
求是科技
求是科技

1.登陆用户访问了哪些URL,不需要druid,mvc的拦截器就能完成。

2.有些sql没有挂上用户id,不知道算不算该用户执行了该条sql;如果算的话,那就简单了,进入controller拿得到用户id,mvc的拦截器在 处理器执行完后会有回调,daoimpl的sql你事先是知道的,这样就可以统计出来了。

<!-- 配置druid监控spring jdbc -->
    <bean id="druid_stat_interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
    </bean>
    <bean id="druid_stat_pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype">
        <property name="patterns">
            <list>
                <value>com.readygo.missb_cms.services.impl.*</value>
                <value>com.readygo.missb_cms.mapper.*</value>
            </list>
        </property>
    </bean>
    <aop:config>
        <aop:pointcut expression="bean(druid_stat_pointcut)" id="druiStatPointcut" />
        <aop:advisor advice-ref="druid_stat_interceptor" pointcut-ref="druiStatPointcut" />
    </aop:config>




r
richardsosa
感谢回答,不过目前这个项目的框架很古老,不是使用spring。 我目前想到的方案是通过filter拿用户和访问的URL。 再配合druid的记录sql执行日志和时间。 如果系统有故障需要排查,回查的时候就以url的执行时间检查对应时间段的执行sql来作为依据了。 感谢
0
逝水fox
逝水fox

继承com.alibaba.druid.filter.FilterEventAdapter,重写statementExecuteQueryBefore()方法。

当前用户的话,一般的系统需要从会话(或者等同于会话的缓存等)中获取,虽然在你的实现里面可以这么写,不过最好是写个静态工具比如WebUtils.getCurrentUserId()把功能实现在里面

返回顶部
顶部