背景
不知道你有没有这样的感觉?报表数量越来越多,涉及到表和模版的交叉越来越复杂,日常运维变得有心无力。某天心血来潮修改数据库的表,可能就会牵一发而动全身,造成某些报表访问出错。不是每个用户发现问题都会及时反馈问题,若没有及时反馈,问题就会一直搁浅,直到有对此报表需求强烈的人员等用户向你进行反馈,出错的问题才暴漏出来。如果时间间隔比较长,回顾当时修改再去维护也比较困难,还很影响用户体验。作为一个对自己有点要求的“数据搬运工”,怎么能够等用户主动来向你反馈报表问题,那肯定要在用户访问出错时就知道。
在BI开发的初期,我也曾每周空闲的时候把目录点上一遍,这个过程中确实能够发现一些问题,但随着报表上线数越来越多,全点一遍的效率非常低,且有的问题在静态页面中并没有体现,而是在用户操作后错误才会出现(如填报、筛选、导出),要是每个报表都这么来一遍,那也不用干别的了(累)。
经过思考后从以下几个方面入手:
在删除报表时,需检查目录上是否挂载
找出模版和表的对应关系(读取模版文件),删除表或更改表结构时找到对应的模版检查
定义出错模版,写个html页面,并将一个模版内嵌到html,只要logdb.fine_record_execute中出现这个模版,就说明页面出错了,可结合定时调度进行提醒,然后根据出错时间去服务器查看fanruan.log日志报错;
在查看日志的大部分都是无用信息,只有中文信息对发现错误有用,可以python处理日志文件,只打印中文行部分,并调用chatgpt接口进行总结(当个乐子)
ps:在FR11.0中已经将出错日志的中文内容集成在平台日志-模版报错模块,并消息提醒,之前版本可以参考思路。 |