ecFlow笔记:ecFlow日志解析 - 服务端记录

目录

本文属于介绍 NWPC 工作流日志工具的系列文章。

之前的文章《ecFlow笔记:ecFlow日志解析 - 通用字段》介绍如何解析 ecFlow 日志的通用字段。

本文介绍如何解析服务端记录(ServerLogRecord)类型的 ecFlow 日志条目。

本文代码均来自 nwpc-oper/nwpc-workflow-log-model 项目。

介绍

目前 NWPC 使用的 ecflow 服务日志中,服务端记录仅有一种类型:

MSG:[20:29:54 28.5.2020] svr:check_pt in 0 seconds

表示服务端执行 checkpoint 操作。

目前 NWPC 工作流日志工具尚未使用服务端记录,所以仅做简单的解析。

结构

服务端记录(ServerLogRecord)的结构继承自通用日志结构(EcflowLogRecord),将 Event 字段设置为状态变化 EventType.Server。 同时增加命令(Command)字段,记录执行的命令。

服务端记录结构

解析

在经过通用解析后,从 command 字段中提取服务端命令设置为命令字段(Command)。

服务端记录解析

实现

请参考 nwpc-workflow-log-model 项目的 ServerLogRecord 类的 parse_record 函数

以下代码来自该函数,其中 self 表示 EcflowLogParser 类,line 是解析过通用字段后剩余的日志条目字符串。即

check_pt in 0 seconds

查找 " ",获取命令

start_pos = 0
end_pos = line.find(" ", start_pos)
event = line[start_pos:end_pos]
self.event = event
self.command = self.event

参考

项目:

nwpc-oper/nwpc-workflow-log-model