SAP Gateway 异常日志设计详解,从 LOG_STEP_COMPLETION_EXCEPTION 看懂异常、步骤与关联日志

SAP Gateway 异常日志设计详解,从 LOG_STEP_COMPLETION_EXCEPTION 看懂异常、步骤与关联日志 在 SAP Gateway 的 OData 请求处理中,真正棘手的故障往往不是某个异常有没有被抛出来,而是当管理员进入/IWFND/ERROR_LOG或后台的/IWBEP/ERROR_LOG时,能不能迅速回答几个非常具体的问题。哪一个处理步骤失败了,失败发生在哪个系统,触发失败的异常到底是什么,这个异常是不是已经由其他 Gateway 组件记录过,以及当前看到的异常和整条请求链路之间是什么关系。这类问题正是 SAP Gateway 日志框架存在的价值。SAP 官方提供的/IWFND/CL_LOGGER以及/IWBEP/CL_COS_LOGGER并不只是一个把文本写入日志文件的工具,它们建立了一套面向 Gateway 请求处理过程的结构化日志语义。其中非常关键的一个方法就是LOG_STEP_COMPLETION_EXCEPTION。SAP 对这个方法的定义相当明确,它用于记录一个以异常结束的处理步骤,同时把导致该步骤失败的异常本身写入日志。调用以后会产生两条相互关联的日志记录,一条代表这个处理步骤已经结束,另一条保存异常以及相应的异常描述。管理员因此能够从步骤完成日志追踪到真正对应的异常,而不是面对一堆彼此没有上下文关系的错误文本。理解这一点以后,LOG_STEP_COMPLETION_EXCEPTION这个名字就很好理解了。它并不是简单的LOG_EXCEPTION,而是把STEP COMPLETION和EXCEPTION绑定在同一个日志动作里面。