问题
可以通过什么方式获取用户在smartbi操作时相关的知识库执行SQL?
解决方案
(smartbi v95 版本以上(不含v97)2021年6月后版本支持,v97版本2022年3月中旬后版本支持)
具体步骤如下:
1、修改系统监控日志级别
管理员角色打开系统监控-log4j信息
在如下图区域输入框新增一行lo4j信息日志级别:common.repository.sql ,下拉框选择 DEBUG
填写完成后,点击底部的修改按钮。
2、实时查看执行sql
有两种方式在smartbi界面上实时查看相关的知识库执行sql日志,根据实际需要灵活选择。
(1)系统监控查看
系统监控-日志,点击开始监控,然后用户去smartbi界面操作,再看系统监控输出用户日志 ,就能看到执行了哪些sql,如下图,sql is后面拼接的字符串是一条sql语句:
左边较长字符串是会话id,[]里面是用户名,
上面这个图的用户名是c,代表这个sql是c用户操作产生的,
若日志太多 ,可在过滤输入框输入会话id过滤,
NOT_LOGGED_IN 代表还没有登录的会话标识,
会话id一致,代表同一个用户在一个客户端上操作的记录。
上图中sql中经常是带有“?”的,其执行时实际的值会打印在后面的中括号中,实际执行的sql语句需要将中括号中的值按顺序替换上图sql的问号,并根据数据库表对应字段的数据类型确定替换问号的值需不需要添加单引号。
如果打出来的sql语句没有问号 ,则中括号内一般为空。
(2)用户日志查看
当在线用户比较多的时候,系统监控看到的日志可能特别多,容易造成浏览器卡顿,不方便排查,此时如果操作的用户如果有用户日志的操作权限,该用户打开用户日志,点击开始监控,也是可以看到相关的基于知识库执行的sql语句,并且用户日志中看到的sql,都是由当前的用户的操作发起的,不需要进行过滤查找。
3、导出日志
对于步骤2(1)的系统监控查看的日志,如需导出,可通过系统运维-系统日志导出
对于步骤2(2)的用户日志查看到的日志,可直接在用户日志右上角导出所有