如何使用TYPO3日志通道属性



TYPO3日志通道的用途是什么?我希望使用它们作为一种方便的新方式,为特定的通道/日志文件汇集日志消息。但要么我错过了如何配置,要么这不是信道属性的目的…

编辑:我当然使用php 8。

服务现在能够控制创建注入记录器时使用的组件名称。

来自更改https://github.com/TYPO3/typo3/commit/8e0cdb4646118734d48c184bcca63ef17ada8ad2

我认为这里的相关部分是";部件名称";。创建Logger时,会设置一个名称。通常,这是从类的名称空间构造的。例如,如果我们有类TYPO3CMSLinkvalidatorLinkAnalyzer,则名称为"TYPO3.CMS.Linkvalidator.LinkAnalyzer"。然后,在配置日志时,可以将其用作['TYPO3']['CMS']['Linkvalidator']['LinkAnalyzer']

使用通道,我们可以替换此机制并设置任意名称,从而将其用于几个相关的类,而不考虑命名空间或类名。

长话短说,为频道名称";链接验证器";配置如下:


LinkAnalyzer.php:

namespace TYPO3CMSLinkvalidator;
use PsrLogLoggerInterface;
use TYPO3CMSCoreLogChannel;
#[Channel('linkvalidator')]
// Add this to the constructor
public function __construct(
// ....
protected readonly LoggerInterface $logger
) {
$this->logger->debug('Linkvalidator constructur');
// ...
}

AdditionalConfiguration.php:

(在v12及更高版本中使用system/additional.php(

use TYPO3CMSCoreCoreEnvironment;
use TYPO3CMSCoreLogLogLevel;
use TYPO3CMSCoreLogWriterFileWriter;

$logdir = Environment::getVarPath() . '/log/';
// without channel
$GLOBALS['TYPO3_CONF_VARS']['LOG']['TYPO3']['CMS']['Linkvalidator']['LinkAnalyzer']['writerConfiguration'] = [
LogLevel::DEBUG => [
FileWriter::class => [
'logFile' => $logdir . 'typo3-linkvalidator.log'
]
],
];

// with channel
$GLOBALS['TYPO3_CONF_VARS']['LOG']['linkvalidator']['writerConfiguration'] = [
LogLevel::DEBUG => [
FileWriter::class => [
'logFile' => $logdir . 'typo3-linkvalidator-CHANNEL.log'
]
],
];

对于通道,将写入文件typo3-linkvalidator-CHANNEL.log。目录依赖:

  • 与作曲家:var/log
  • 无作曲家:typo3temp/var/log

最新更新