(本文档适用于V8、V9版本)
问题说明
现场发现某个数据源的表上设置了数据权限,但是偶尔会发现这个数据权限的 内容和范围定义发生了变化或者丢失。并且无法跟踪到是哪个用户进行的修改或者是因为什么愿意发生了变化或丢失。那么需要如何跟踪呢?
跟踪方法
可以通过代码的方式增加跟踪手段。
2.访问http://ip:port/smartbi/vision/monitor/code.jsp
3.点击“加载”
4.切换到“方法增强”
5.【选择类】这一项中选择“smartbi.freequery.repository.RowPermission”
6.【选择方法】这一项中选择“setApplyRangeDefine(java.lang.String)”
7.【插入点】选择“代码结束后”
8.然后在【代码结束后】这一行中,输入如下代码:
org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger("smartbi.freequery.repository.RowPermission"); if($0.applyRangeDefine !=null && !"".equals($0.applyRangeDefine)) { logger.info("this xml is --" + $0.applyRangeDefine + "--", new RuntimeException()); }
效果如下:
通过这种方式,只要数据源上的数据权限发生了变化,就会在后台进行记录。就可以直接导出系统日志分析
注:该方法如果重启了Smartbi,就需要重新配置