georgringer / logging
TYPO3 CMS 的日志记录
Requires
- monolog/monolog: ^1.20
- typo3/cms-core: >=7.6.0,<8.9.99
Requires (Dev)
- mikey179/vfsstream: 1.4.*@dev
- phpunit/phpunit: ~4.8.0
Replaces
- logging: dev-analysis-zYKNOK
- typo3-ter/logging: dev-analysis-zYKNOK
This package is auto-updated.
Last update: 2024-08-29 04:19:53 UTC
README
关于
此扩展将出色的项目 monolog 带入 TYPO3 CMS 的世界。
最重要的功能包括
- 完全支持 monolog,包括所有处理程序和处理器
- 一个自定义处理程序,用于写入 TYPO3 的数据库
- 一个后台模块,用于列出和筛选条目
截图


需求
TYPO3.CMS 7.6+
您的项目使用 composer 设置,并需要 monolog/monolog 作为依赖项。
"config": { "vendor-dir": "Packages/Libraries", "bin-dir": "bin" }, { "repositories": [ { "type": "composer", "url": "http://composer.typo3.org/" }, { "url": "https://github.com/georgringer/logging.git", "type": "git" } ], "require": { "typo3/cms": "7.1", "georgringer/logging": "dev-master", "monolog/monolog": "*" } }
可能未来的版本将支持 6.2 LTS。
安装
像往常一样安装扩展。目前(7.2 版本状态),通过 composer 安装的包会自动加载。对于 6.2 LTS,将环境变量 TYPO3_COMPOSER_AUTOLOAD 设置为 1,例如在您的 .htaccess 文件中。
SetEnv TYPO3_COMPOSER_AUTOLOAD 1
配置
可以将配置添加到您的 typo3conf/AdditionalConfiguration.php 文件中。API 受 TYPO3 CMS 当前日志框架的启发。
以下日志级别可用
* Debug (100) * Info (200) * Notice (250) * Warning (300) * Error (400) * Critical (500) * Alert (550) * Emergency (600)
简单的文件日志记录器
这是一个简单的文件日志记录器配置,它将写入 typo3temp/out.log。
$GLOBALS['TYPO3_CONF_VARS']['MONOLOG'] = array( 'handlerConfiguration' => array( 'name' => 'General', 'handlers' => array( \Monolog\Handler\StreamHandler::class => array( 'configuration' => array( PATH_site . 'typo3temp/out.log', \Monolog\Logger::ERROR ) ) ) ) );
每个调用都将记录,其中日志级别至少为 ERROR(400)。
重要:请小心,如果将日志记录到没有访问限制的公共目录中的文件!!
记录到数据库
有时将日志记录到数据库是有意义的。您可以使用以下配置来完成此操作
$GLOBALS['TYPO3_CONF_VARS']['MONOLOG'] = [ 'processorConfiguration' => [ \GeorgRinger\Logging\Log\Monolog\Processor\Typo3Processor::class => [] ], 'handlerConfiguration' => [ 'name' => 'General', 'handlers' => [ \GeorgRinger\Logging\Log\Monolog\Handler\DatabaseHandler::class => [] ] ] ];
Typo3Processor 将向日志条目添加附加信息
- 一个 TYPO3 的 内部进程 ID,它允许过滤单个请求中的所有日志条目
- 客户端的 IP
- TYPO3 模式,可以是 BE、FE 或 CLI
- 现有后端或前端用户的 ID
组合示例
日志框架允许组合多个处理程序。日志记录不仅有助于您构建网站或应用程序,而且在整个生命周期中也非常有用!特别是在生产网站上,您可能无法使用像 print_r 或 die() 这样的命令。
您可能可以忽略调试信息,将警告写入文件,并通过电子邮件发送错误给自己
$GLOBALS['TYPO3_CONF_VARS']['MONOLOG'] = array( 'processorConfiguration' => array( \GeorgRinger\Logging\Log\Monolog\Processor\Typo3Processor::class => array() ), 'handlerConfiguration' => array( 'name' => 'General', 'handlers' => array( \Monolog\Handler\NativeMailerHandler::class => array( 'configuration' => array( 'admin@example.org', 'Error from website', 'no-reply@example.org', \Monolog\Logger::ERROR ), ), \Monolog\Handler\StreamHandler::class => array( 'configuration' => array( PATH_site . 'typo3temp/out.log', \Monolog\Logger::WARNING ), ), \Monolog\Handler\SocketHandler::class => array( 'configuration' => array( 'tcp://127.0.0.1:7000' ), 'formatter' => array(\Monolog\Formatter\LogstashFormatter::class, array('Application', 'System')), ), ) ) );
依赖于调用类的日志记录器
如 TYPO3 CMS 的当前日志框架中一样,此扩展也允许为不同的类配置不同的日志记录行为。一个例子是将所有警告记录到文件中,但对于一个重要的扩展,这些警告还应通过电子邮件发送。
因此,将特定扩展的命名空间添加到日志配置中
$GLOBALS['TYPO3_CONF_VARS']['MONOLOG'] = array( 'handlerConfiguration' => array( 'name' => 'General', 'handlers' => array( \Monolog\Handler\StreamHandler::class => array( 'configuration' => array( PATH_site . 'typo3temp/out.log', \Monolog\Logger::WARNING ) ) ) ) ); $GLOBALS['TYPO3_CONF_VARS']['MONOLOG']['GeorgRinger']['Shop'] = array( 'handlerConfiguration' => array( 'name' => 'Important Extension', 'handlers' => array( \Monolog\Handler\NativeMailerHandler::class => array( 'configuration' => array( 'admin@example.org', 'Error from website', 'no-reply@example.org', \Monolog\Logger::WARNING ) ), \Monolog\Handler\StreamHandler::class => array( 'configuration' => array( PATH_site . 'typo3temp/out.log', \Monolog\Logger::WARNING ) ) ) ) );
在上面的示例中,GeorgRingerShop 命名空间内的每个日志调用都会触发第二个配置。所有其他调用将由第一个配置处理。
如何记录
日志记录非常简单,与使用的日志框架类似
/** @var \Monolog\Logger $logger */ $logger = GeneralUtility::makeInstance(\GeorgRinger\Logging\Log\MonologManager::class)->getLogger(__CLASS__); $logger->info('Some text', array('additional information' => 123));
日志记录可用方法
以下方法可用于日志记录。context 是一个可选的数组,包含附加信息。
调试
$logger->addDebug($message, $context); $logger->debug($message, $context);
信息
$logger->addInfo($message, $context); $logger->info($message, $context);
注意
$logger->addNotice($message, $context); $logger->notice($message, $context);
警告
$logger->addWarning($message, $context); $logger->warn($message, $context); $logger->warning($message, $context);
错误
$logger->addError($message, $context); $logger->err($message, $context); $logger->error($message, $context);
临界
$logger->addCritical($message, $context); $logger->crit($message, $context); $logger->critical($message, $context);
警报
$logger->addAlert($message, $context); $logger->alert($message, $context);
紧急
$logger->addEmergency($message, $context); $logger->emerg($message, $context); $logger->emergency($message, $context);
贡献!
任何贡献都深受欢迎。请使用 GitHub 项目 的问题追踪器!
如果这个扩展对您有帮助,请不要犹豫,慷慨捐赠!