松鼠仓库/ error-log
此TYPO3扩展管理错误和异常,甚至在TYPO3完全加载之前。它将错误分组并在后端显示,包括详细信息和不完整信息。通过电子邮件和Slack配置的通知和报告可让您保持最新,同时AI辅助有助于解决问题。
Requires
- erusev/parsedown: ^1.7
- slack-php/slack-block-kit: ^2.1
- symfony/http-client: ^6.0
- typo3/cms-core: ^12.4
- typo3/cms-scheduler: ^12.4
README
TYPO3高级错误日志
特性
- 处理TYPO3错误和内容对象异常
- 处理TYPO3完全加载之前发生的错误
- 在TYPO3后端模块中显示分组错误
- 为每个错误发生提供详细信息,包括堆栈跟踪
- 通过电子邮件和Slack配置错误通知
- 通过电子邮件和Slack配置组合错误报告
- AI辅助错误解决
要求
基本要求与所使用的TYPO3版本相同,但是可能需要调整php.ini以收集错误堆栈跟踪的参数。
从PHP v7.4
开始,添加了一个新的ini指令zend.exception_ignore_args
,默认值为On
。结果,默认PHP设置没有收集参数。应将其更改为zend.exception_ignore_args = Off
。
安装
您可以使用以下方式安装高级错误日志:
composer require raccoondepot/error-log
扩展安装后,升级向导会重写项目LocalConfiguration文件,以使用我们的异常处理器设置。
配置
大多数设置都可通过模块中的设置操作获得。它由两个标签组成 - 设置
和用户
。在设置标签中,有三个部分 - 通用
- Slack
和OpenAI
,这些部分可帮助您配置相应功能。每个部分以一个复选框开始,该复选框启用当前设置部分。用户标签显示已启用电子邮件通知的用户列表。
通用
使用启用错误日志功能
复选框,您可以选择启用或禁用日志记录。它以与升级向导相同的方式写入LocalConfiguration更改。
错误日志过期前天数
字段负责错误日志数据库清理。它说明了何时需要删除过时的记录。默认值0
表示不删除错误记录。
Slack
要使用Slack,我们需要通过相应的复选框(启用Slack通知
)启用它。要发送通过Slack的通知,首先需要创建一个Slack应用程序。创建过程在Slack教程页面中描述。
应用程序准备就绪后,您应添加其授权令牌和通知将发送到的频道ID。频道ID可在频道详情弹出窗口的底部查看。应使用这些值填写Slack授权令牌
和Slack频道ID
字段。
有一个发送测试消息
按钮来检查应用程序是否配置正确。
下一步是配置错误发生和报告的通知。这可以通过错误报告发送
和错误发生通知发送
下拉菜单完成。
OpenAI
OpenAI API 用于获取关于错误原因和解决方法的建议。要使用 OpenAI API,需要从 OpenAI 获取授权令牌并将其输入到 OpenAI 授权令牌
字段中。在 OpenAI 系统预提示
字段中,您可以调整对 LLM 的初始指令。下拉列表 OpenAI GPT 模型
允许您选择要使用的模型。gpt-3.5-turbo 是最便宜的,而 gpt-4-turbo 是最智能的,但稍微慢一些且最贵。
在 OpenAI 部分的底部有一个 测试 AI
按钮,用于检查是否已正确配置。
电子邮件通知
扩展模块中未配置电子邮件通知。它们将单独为每个用户(如果需要)进行配置,因此这些选项可以在用户设置或后端用户模块(也可以通过扩展设置操作的 用户 选项卡进行用户编辑)中找到。
在用户设置和后端用户中都添加了一个新的选项卡 错误通知。在这里,您可以找到类似于 Slack 的配置 - 启用电子邮件通知
复选框和两个下拉列表:错误报告发送
和 错误发生通知发送
。
为了使其生效,用户电子邮件字段也应填写在用户设置中。如果一切配置正确,用户将收到如下电子邮件:
调度任务
我们的扩展使用一个调度任务 错误日志服务管理任务。它用于发送报告、处理未正确分发的错误(那些在 TYPO3 完全加载之前出现的)并清理数据库。每小时执行一次或两次应该足够。
内容对象异常
默认情况下,我们覆盖了本地内容对象异常处理程序,将内容对象错误详细信息写入我们的日志,但其余行为保持不变(在无法渲染的章节中显示 发生错误 消息)。如果您想在页面上查看错误详细信息,应通过 typoscript 关闭此处理程序。
config.contentObjectExceptionHandler = 0
结果,错误详细信息将在页面上显示,但它们仍然会通过我们的扩展进行记录
主要功能描述
我们扩展的主要部分是位于 TYPO3 后端 系统
部分的 错误日志
模块。
列表中的每个错误都可以通过详细信息进行展开。这里您可以看到一个包含入口点、浏览器信息、IP等详细信息的表格,以及带有参数的完整堆栈跟踪:
如果配置了OpenAI,还会有一个名为“AI助手”的标签页,其中包含基于错误详情的提示并准备好执行。如果需要,也可以修改提示。AI的请求将在提示文本区域下方显示:
事件和功能扩展
在我们的扩展中,我们派发了两个事件
您可以为这些事件中的任何一个轻松添加自己的监听器,并在事件派发时执行自己的操作。
未来计划
这个扩展还在进行中,我们有很多想法要实现在未来版本中。以下是一些:
- 处理PHP错误日志文件中的错误(直接或通过直接上传的文件);
- 为替代通知源提供动态配置;
- 使用检索增强生成(RAG)来提供更好的TYPO3上下文给AI。