
生产系统里最让人头疼的一类问题,往往不是系统直接 dump,也不是 HTTP 请求彻底失败,而是业务人员只看到一句很模糊的报错,开发人员打开代码没有发现明显异常,Basis 团队检查系统状态也正常,最后几个团队只能围绕同一笔 OData 请求反复确认。在 SAP Gateway 场景里,这类问题尤其典型。一个来自 SAP Fiori、移动应用或者第三方系统的 HTTP 请求进入 SAP Gateway 之后,可能经过 Gateway Frontend、OData Runtime、System Alias、RFC、Backend Provider、业务对象、BAPI,甚至继续调用另一个远程系统。一条看起来只有几百毫秒的请求,背后实际上可能横跨十几个技术步骤。真正成熟的日志体系,不应该只是发生错误以后随手写一句文本,而是应该回答几个非常具体的问题。这条消息属于某一个用户、某一次 HTTP Request,还是整个系统都受到影响。这个问题能够由最终业务用户调整输入解决,还是必须由 SAP 管理员或者开发人员处理。当前失败究竟发生在 Gateway Framework、应用实现、RFC Backend,还是外部系统。某一个 processing step 已经成功完成,还是以 warning、error、abort 或 exception 结束。SAP Gateway 的 logging framework 正是围绕这些问题设计的。SAP 官方将/IWFND/CL_LOGGER作为 Gateway logging API,并为不同 logging scenario 提供不同方法,而不是要求所有情况都塞进一条普通文本日志。理解这套机制以后,再