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

TYPO3 11.5.24中CacheFlushEvent事件监听器配置无效求助

TYPO3 11.5.24 CacheFlushEvent 监听器无日志输出排查方案

1. 修复命名空间语法错误

你的监听器类代码里,命名空间行末尾缺少分号,这会导致PHP解析失败,类根本无法加载,构造函数和__invoke自然不会执行:

// 错误写法
namespace Vendor\MyExt\EventLister
// 正确写法
namespace Vendor\MyExt\EventLister;

2. 配置日志输出路径

TYPO3默认日志可能未将error级别日志输出到可查看的位置,需手动配置日志处理器:
打开typo3conf/AdditionalConfiguration.php,添加以下配置将日志写入指定文件:

$GLOBALS['TYPO3_CONF_VARS']['LOG']['Vendor']['MyExt']['writerConfiguration'] = [
    \Psr\Log\LogLevel::ERROR => [
        \TYPO3\CMS\Core\Log\Writer\FileWriter::class => [
            'logFile' => 'typo3temp/logs/my_ext_error.log'
        ]
    ]
];

修改后刷新缓存,触发事件后可前往typo3temp/logs查看日志文件,或在后端「系统 > 日志」模块中查看。

3. 确认触发事件的正确操作

CacheFlushEvent仅在全量刷新缓存时触发,需执行正确操作:

  • 后端操作:点击顶部栏的「Flush all caches」按钮(注意不是单个缓存组的刷新)
  • 命令行操作:执行./vendor/bin/typo3 cache:flush

4. 修正服务注入与监听器配置

两个细节需要调整:
一是注入Logger时,Symfony DI需用@符号引用服务,之前的写法不符合规范;
二是显式指定__invoke方法,避免TYPO3识别异常。修改Configuration/Services.yaml:

Vendor\MyExt\EventLister\CacheFlushEventListener:
  arguments:
    $logger: '@Psr\Log\LoggerInterface'
  tags:
    - name: event.listener
      identifier: 'vendor-my-ext-flush-listener'
      event: TYPO3\CMS\Core\Cache\Event\CacheFlushEvent
      method: '__invoke'

5. 核对类文件路径

确保类文件放在EXT:my_ext/Classes/EventLister/CacheFlushEventListener.php,目录结构必须和命名空间Vendor\MyExt\EventLister完全对应,层级不能出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:30:36