You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TYPO3插件调用logger写入sys_log表无报错无记录该如何解决?

问题原因

  • TYPO3 核心通用日志组件(LogManager)默认配置的日志写入器为文件写入器,日志默认写入到typo3temp/var/log/目录下的日志文件,不会自动写入sys_log表。
  • sys_log表是TYPO3专门用于存储后端操作记录、核心系统事件的表,默认未与通用日志组件做绑定,通用logger生成的日志不会直接同步到该表。
  • 存在日志级别过滤的可能:如果全局或对应扩展的日志级别阈值配置高于info(比如仅记录warning及以上级别日志),info级别的日志会被直接过滤丢弃。

解决办法

提供两种可选方案,可根据需求选择:

方案1:直接使用sys_log专属写入逻辑

不通过通用日志组件,直接调用数据库连接写入sys_log表,代码示例:

// classes/controller/MyExtensionController.php
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Log\LogLevel;
use TYPO3\CMS\Core\Database\ConnectionPool;

class MyExtensionController {
    public function doAction() {
        $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('sys_log');
        $connection->insert(
            'sys_log',
            [
                'userid' => $GLOBALS['BE_USER']->user['uid'] ?? 0, // 后端用户ID,前端上下文可填0
                'action' => 0, // 自定义操作类型标识
                'recuid' => 0, // 关联业务记录UID,无关联可填0
                'tablename' => '', // 关联业务表名,无关联可填空字符串
                'details' => 'TEST',
                'log_data' => json_encode(['something' => 123]),
                'IP' => GeneralUtility::getIndpEnv('REMOTE_ADDR'),
                'tstamp' => time(),
                'type' => 5, // 扩展自定义日志的固定类型标识
                'level' => LogLevel::INFO
            ]
        );
    }
}

方案2:配置通用日志组件绑定sys_log写入器

如果你想保留通用日志组件的调用方式,只需要在扩展的ext_localconf.php中增加写入器配置即可:

// ext_localconf.php
// 请将下方的YourVendor\YourExtension替换为你自己扩展的命名空间前缀
$GLOBALS['TYPO3_CONF_VARS']['LOG']['YourVendor']['YourExtension']['Controller']['writerConfiguration'] = [
    \TYPO3\CMS\Core\Log\LogLevel::INFO => [
        \TYPO3\CMS\Core\Log\Writer\DatabaseWriter::class => [
            'logTable' => 'sys_log',
        ]
    ]
];

配置完成后,你原有代码中调用$logger->info()生成的日志就会自动写入sys_log表。

注意:如果配置后仍不生效,请检查全局日志级别配置,确保INFO级别没有被过滤。

内容的提问来源于stack exchange,提问作者ESP32

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:15:04