1、概述
在项目实施中,往往需要部署多个软件协同运行,以实现复杂的计算和功能,如SepCon、SepOpt、SepsimSFS等等,而当在软件出现报警或异常情况时,如果能够方便的对软件的运行日志进行查看和分析,则会让工程师或者用户方在很大程度上更高效的锁定问题的原因或者范围,日志通常是软件运维所必要的内容。
当前日志推送方案针对的是Sepsim的系列软件在Runtime中,如何将日志推送至SEPHMI-Explore端,结合SEPHMI-Explore端的系统状态监控,实现对软件集群的实时监控和运行分析功能。


2、日志推送方案
2.1、数据流图

说明:
1、箭头的方向代表数据的最终流向;
2、绿色线代表日志给与方主动推送;
3、蓝色线代表由日志接收方向日志给予方发起请求而取得日志,即拉取方式。
2.1.1、Sepsim-Runtime内部流程
Step1:
SepCon、SepOpt、SepsimSFS各自建立自己的EveLog参数,类型为字符串,如SepCon是在Controller的位号中,创建一个EveLog参数或输出,当在Runtime中产生日志需要记录时,将日志信息存入EveLog中即可,每次存入均为覆盖方式。

即:将日志实时存入MPC10-100.EveLog中即可。
同理,SepOpt是将日志存入优化器的位号的EveLog中。
Step2:
SepCon、SepOpt、SepsimSFS都是依托于Sepsim软件进行运行,Sepsim会对EveLog参数进行实时抓取,将抓取到的日志内容,以及携带算法名、位号名一起进行缓存(暂定缓存至数组中),供SEPHMI-Client进行抓取。
2.1.2、SEPHMI-Client拉取日志
Step1:
在SEPHMI-Client中下载SEPHMI-定时任务管理-(状态推送、日志推送)模板,导入访问首页,并进入位号配置页面(OTHER TAGNAME),配置日志拉取对象信息,包括拉取地址(sepsim接口地址)和转发目标地址(SEPHMI-Explore地址)

Step2:
进入自定义任务管理页面(BUILD TASK),配置一个转发日志的任务,执行代码采用系统提供的sendSepsimLogs2HmiSvr()方法,此方法会将OTHER TAGNAME中配置的所有标识为sepsimLog的对象所读取到的日志全部转发到设定的目标地址中。

2.1.3、SEPHMI-Client推送日志给SEPHMI-Explore
SEPHMI-Client根据BUILD TASK中所定义的任务,按执行周期定时去指定的sepsim地址拉取日志,拉取到日志之后,同时就推送给SEPHMI-Explore,SEPHMI-Explore收到日志按照AppName、LogType、LogInfo进行存库,用于后续查询。
2.2、协议及格式定义
2.2.1、计算模块产生日志到EveLog的格式
格式:类型(info、alarm、erro、event)/描述
说明:两个数据项,以斜杠进行分隔。
2.2.2、Sepsim拉取日志并缓存的格式
格式:时间/算法/位号名/类型(info、alarm、erro、event)/描述
说明:五个数据项,以斜杠进行分隔。
2.2.4、SEPHMI-Client推送给SEPHMI-Explore的格式
参考《SEPHMI-日志查询SYSTEM-Event-Log模板》中4.3.2接口协议的介绍。
2.3、对于特殊日志格式的处理
对于一些需要特殊格式的日志记录,比如带有结构化的日志内容,可以在描述中进行自定义,如用英文逗号进行分割,或者用其他符号进行分割。待在上层网络中的SEPHMI-Explore进行展示页面的组态时,可以首先对所属算法位号名的日志进行读取,然后将日志内容,通过脚本进行格式化的解析,最后进行展现,如以下示例:

这里的各个时间点的几项数值,在runtime中触发的时候,可以将此刻的数据通过英文逗号连接作为日志的描述存储,即:2025-10-01 12:00:00/info/0.09,True,1800s,True
3、SEPHMI-Explore日志展示
详细参考《SEPHMI-SEP系统状态监控界面模板》和《SEPHMI-日志查询SYSTEM-Event-Log模板》中的介绍。