跳转到内容

错误日志

面向平台运维人员。这些任务会影响整个部署。请按任务要求准备服务器访问权限或平台管理权限。从管理员手册开始。

服务器上出现失败时,OpenBot 会写一行级别为 Error 的日志。OpenBot 不会把这些日志发送到其他服务。你可以用 Effect 日志器自己添加这个功能。


来源 何时
http 请求以 500 或更高的状态结束时。
turn Turn 以 Failed 状态结束时。
startup OpenBot 启动失败时,比如因为配置有误。

普通的请求错误,比如 400、401、404 或 409,不会作为错误记录。人有意中断的工作也不会记录。

每条错误日志的消息都是 OpenBot operation failed,并带有下面这些注解。注解(annotation)是附加在日志行上的一个具名值。

注解 含义
source、operation OpenBot 的哪个部分失败了。
errorType 错误的简短名称,OpenBot 知道时才有。
requestId、method、route、status 用于 HTTP 失败。route 是路由模式,不是真实的路径。
chatId、turnId 用于 Turn 失败。

日志中还有失败的原因。原因中可能包含错误消息和其他私密数据。

503 的原因常常是一个内部失败,比如数据库错误。OpenBot 不会把内部失败发送给客户端。它会先把它写进一行级别为 Warn 的日志,并带上原因和它在代码中发生的位置。一个请求的每一行日志都和这个请求的错误日志有相同的 requestId。用它可以找到请求失败的原因。

Turn 失败时,客户端只得到一条简短的消息。模型错误,比如对模型来说太大的输入,会保留它的消息,代码是 model_error。其他所有失败,比如数据库错误,代码是 internal_error,消息是固定的文字。完整的原因在一行级别为 Warn、消息为 A Turn failed 的日志中。它和错误日志有相同的 chatId 和 turnId。


OpenBot 也会在后台做一些工作。比如,它会触发到时间的 Trigger,删除旧文件,暂停空闲的 Computer,为 App Index 检查 App,并监听设置的修改。它还会在委派的工作到达时间限制时暂停它,发送提醒,发送 Channel 的消息,并监听来自它的其他实例的调用。

这项工作的某一次运行失败时,OpenBot 会写一行级别为 Warn 的日志,并带上原因。然后它会在下一次的时间再运行这项工作。工作不会停止。这些日志行的级别是 Warn,不是 Error,因为工作还会继续。有几个步骤常常因为无害的原因失败,比如另一个实例正在处理的Chat。下一次运行会再做它们,所以它们的日志行级别是 Debug。

服务器停止时,后台工作也会停止。这不会作为失败记录。


此开发任务请参见 添加错误日志记录器.