cakephp/log

支持多个不同流的目标的 CakePHP 日志库

5.1.0 2024-09-06 12:23 UTC

This package is auto-updated.

Last update: 2024-09-21 03:06:41 UTC


README

Total Downloads License

CakePHP 日志库

Log 库提供了一个 Log 服务定位器,用于通过简单的接口与多个日志后端进行交互。使用 Log 类,可以将单个消息同时发送到多个日志后端,或者基于日志级别或上下文仅发送到其中一部分。

默认情况下,您可以使用文件或 Syslog 作为日志后端,但您可以使用实现 Psr\Log\LoggerInterface 的任何对象作为 Log 类的引擎。

用法

您可以根据应用程序的需求定义尽可能多或尽可能少的记录器。记录器应使用 Cake\Core\Log. 进行配置。例如:

use Cake\Cache\Cache;

use Cake\Log\Log;

// Short classname
Log::config('local', [
    'className' => 'FileLog',
    'levels' => ['notice', 'info', 'debug'],
    'file' => '/path/to/file.log',
]);

// Fully namespaced name.
Log::config('production', [
    'className' => \Cake\Log\Engine\SyslogLog::class,
    'levels' => ['warning', 'error', 'critical', 'alert', 'emergency'],
]);

您还可以通过提供一个闭包来创建记录器。

Log::config('special', function () {
	// Return any PSR-3 compatible logger
	return new MyPSR3CompatibleLogger();
});

或者直接注入一个实例

Log::config('special', new MyPSR3CompatibleLogger());

然后您可以使用 Log 类将消息传递给日志后端

Log::write('debug', 'Something did not work');

只有订阅了您要写入的日志级别的日志引擎才会接收到消息。在上面的示例中,只有 'local' 引擎会收到日志消息。

使用作用域过滤消息

Log 库支持消息过滤的另一层级别。通过使用作用域,您可以限制接收特定消息的日志引擎。

// Configure /logs/payments.log to receive all levels, but only
// those with `payments` scope.
Log::config('payments', [
    'className' => 'FileLog',
    'levels' => ['error', 'info', 'warning'],
    'scopes' => ['payments'],
    'file' => '/logs/payments.log',
]);

Log::warning('this gets written only to payments.log', ['scope' => ['payments']]);

文档

请确保您查阅了 官方文档