georgringer/logging

TYPO3 CMS 的日志记录

安装次数: 2,545

依赖关系: 0

建议者: 0

安全: 0

星标: 21

关注者: 5

分支: 7

开放性问题: 7

类型:typo3-cms-extension

dev-analysis-zYKNOK 2017-05-17 09:02 UTC

This package is auto-updated.

Last update: 2024-08-29 04:19:53 UTC


README

关于

此扩展将出色的项目 monolog 带入 TYPO3 CMS 的世界。

最重要的功能包括

  • 完全支持 monolog,包括所有处理程序和处理器
  • 一个自定义处理程序,用于写入 TYPO3 的数据库
  • 一个后台模块,用于列出和筛选条目

截图

Documentation/assets/module-list.png Documentation/assets/module-testentry.png

需求

  • 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_rdie() 这样的命令。

您可能可以忽略调试信息,将警告写入文件,并通过电子邮件发送错误给自己

$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 项目 的问题追踪器!

如果这个扩展对您有帮助,请不要犹豫,慷慨捐赠!