logging - TYPO3:如何配置 $GLOBALS['TYPO3_CONF_VARS']['LOG'] 正确性
问题描述
我正在尝试使用日志框架的配置为 TYPO3 中的一个自定义类配置日志记录,如下所述:
我想为每个类配置日志记录
\Aip\塔利亚科达\任务\
没有配置日志消息被写入typo3temp\var\log 下的日志文件中
我做了几次这样的尝试:
$GLOBALS['TYPO3_CONF_VARS']['LOG']['Aip']['Taglialacoda']['Task']['writerConfiguration'] = [
TYPO3\CMS\Core\Log\LogLevel::INFO => [
TYPO3\CMS\Core\Log\Writer\SyslogWriter::class => [],
]
];
结果总是一样的:我找不到任何地方记录的消息。我写的类是一个任务,所以它扩展了 AbstractTask 并有自己的记录器。出于这个原因,我已经建立了另一个记录器(我不希望每个任务都写入 SYS LOG) 正如我所说的没有配置,新记录器会写入日志文件。添加错误输入的配置,该类会引发异常(因此会考虑配置)。使用上面的配置,日志消息似乎消失了。
解决方案
概括:
据我所知,如果您想使用日志记录框架将日志记录到 sys_log DB 表并在只有核心功能的“日志”BE 模块中读取它,那么您就不走运了。
任何一个:
使用扩展“日志”(GitHub 上的来源)(免责声明:这是已在 GitHub 上“存档”的第三方扩展,我不知道它是否支持或支持多长时间)。它在“管理工具”中创建自己的后端模块“日志”。
编写您自己的 LogWriter,它将以“Log”BE 模块可读的正确格式写入 sys_log 表。
您的配置看起来不错(通常),但不会按预期工作。
您可能需要先确定,您知道 SyslogWriter 将写入的位置。这在文档中进行了解释。SyslogWriter 不会像预期的那样写入“sys_log”数据库表,而是通过 syslog 写入系统日志。最终结果取决于您的配置。您可能需要检查您的 /var/log/messages。这可能不是你想要的。请改用 FileWriter 或 DatabaseWriter。
但是,如果您使用DatabaseWriter,这将无法通过后端的“Log”模块读取,如文档中所述:
Admin Tools > Log 模块不适用于 DatabaseWriter 写入 sys_log 表的记录。如果您在那里编写此类记录,您将无法使用该模块查看它们。提示:在https://github.com/vertexvaar/logs有一个用于在 TYPO3 后端查看此类记录的工具。
我认为,如果您将 TYPO3 中的 Logging 视为 2 个单独的 API,它会有所帮助:
- 使用 writelog() 记录到“sys_log”表并使用后端的“Log”模块查看它的“旧”方式。文档中不再建议这样做(尽管仍在核心中使用)。
- 使用“Logging API”进行日志记录的新方法,它可以记录到文件、数据库表等,也可以扩展为记录到其他编写器。
1的方法是通过使用配置的$GLOBALS['TYPO3_CONF_VARS'][SYS][belogErrorReporting]
因此,如上所述,如果您想使用日志框架 (2.) 将日志记录到 sys_log 并在仅具有核心功能的“日志”BE 模块中读取此内容,那么您很不走运。列出了一个扩展https://github.com/vertexvaar/logs。另一种可能性是创建自己的 LogWriter,然后使用 writelog() 写入 sys_log。这样你将来会更加灵活。
我个人也非常喜欢的是sentry-typo3的哨兵方法。你可能想看看它。但是你必须设置一个哨兵服务器。但这很容易做到(至少它对我来说是开箱即用的),但这当然取决于您的网站在哪里运行。
- 查看核心typo3/sysext/core/Classes/Log/Writer/DatabaseWriter.php您会看到默认情况下使用“sys_log”,但需要不同的架构(如文档中所述)。在我看来,这根本没有意义,但事实就是如此。
- 查看核心typo3/sysext/core/Classes/Log/Writer/SyslogWriter.php。您将看到日志记录(在 writeLog() 中)是使用 PHP 函数syslog完成的。这不知道 sys_log 中的 TYPO3 日志记录。
- 查看核心错误和异常处理程序,例如typo3/sysext/core/Classes/Error/AbstractExceptionHandler.php,您将看到日志记录是通过日志记录框架(
$this->logger
)和to 完成的sys_log
。
推荐阅读
- c - 从文件中恢复列/行矩阵
- python - 折叠区域 VSCode
- android - Google 应用已在内部测试轨道上发布,但无法找到/下载
- python - Airflow、XCom 和多个 task_id
- azure-devops - Azure DevOps 敏捷工作流中功能的用途是什么?
- angular - Angular 7.1.3 和 Openlayers 5.3.0 不起作用
- php - Laravel 通过 Http 请求无响应(PHPUnit 工作正常)
- c# - Drawimage(Image, Rectangle) 裁剪原始图像
- android - 带有 .getLastLocation() FusedLocationProviderClient 的位置数据为空
- python - 如何确保 matplotlib 折线图正确?