radphp/logging

RadPHP 日志组件

v0.1.0 2016-04-19 18:25 UTC

This package is not auto-updated.

Last update: 2024-09-12 00:26:19 UTC


README

License Total Downloads

日志库提供使用简单接口的多日志适配器。使用 Logger 类,可以同时将一条消息发送到多个日志适配器。

默认情况下,您可以使用文件或空适配器作为日志适配器,但您可以使用任何实现 Rad\Logging\AdapterInterface 的对象作为 Logger 类的适配器。

使用方法

您可以创建新的实例适配器并将其附加到 Logger 类。例如:

use Rad\Logging\Logger;
use Rad\Logging\Adapter\FileAdapter;

// Attach single or multiple adapters
$logger = new Logger();

$logger->attachAdapter(new NullAdapter());
$logger->attachAdapter(new FileAdapter('/path/to/file.log'));
// Or attaching your adapter
$logger->attachAdapter(new MyAdapter());

// You can pass message to these log levels
$logger->emergency('Something did not work');
$logger->alert('Something did not work');
$logger->critical('Something did not work');
$logger->error('Something did not work');
$logger->warning('Something did not work');
$logger->notice('Something did not work');
$logger->info('Something did not work');
$logger->debug('Something did not work');

日志输出如下

09/Apr/2016 11:18:55 UTC [EMERGENCY] Something did not work
09/Apr/2016 11:18:55 UTC [ALERT] Something did not work
09/Apr/2016 11:18:55 UTC [CRITICAL] Something did not work
09/Apr/2016 11:18:55 UTC [ERROR] Something did not work
09/Apr/2016 11:18:55 UTC [WARNING] Something did not work
09/Apr/2016 11:18:55 UTC [NOTICE] Something did not work
09/Apr/2016 11:18:55 UTC [INFO] Something did not work
09/Apr/2016 11:18:55 UTC [DEBUG] Something did not work

日志消息可能包含占位符。占位符名称必须与上下文数组中的键对应。占位符名称必须用单个开括号 { 和单个闭括号 } 括起来。占位符名称与括号之间不得有任何空白字符。占位符名称应由字符 A-Za-z0-9、下划线 _ 和点 . 组成。其他字符的用途保留用于未来对占位符规范的修改。

以下是一个在日志消息中使用占位符的示例

use Rad\Logging\Logger;
use Rad\Logging\Adapter\FileAdapter;

$logger = new Logger();
$logger->attachAdapter(new FileAdapter('/path/to/file.log'));
$logger->info('User "{user_id}" successfully logged in.', ['user_id' => 2]);

事务

事务将日志数据临时存储在内存中,稍后将其写入所有适配器。

use Rad\Logging\Logger;
use Rad\Logging\Adapter\FileAdapter;

$logger = new Logger();
$logger->attachAdapter(new FileAdapter('/path/to/file.log'));

$logger->begin();
try {
    //Code here
    $logger->commit();
} catch (\Exception $e) {
    $logger->rollback();
    throw $e;
}

格式化器

您可以使用格式化器来格式化日志行或实现自己的格式化器。您的格式化器必须实现 Rad\Logging\FormatterInterface,默认格式化器是 LineFormatter

use Rad\Logging\Logger;
use Rad\Logging\Adapter\FileAdapter;

$logger = new Logger();

$fileAdapter = new FileAdapter('/path/to/file.log');
$fileAdapter->setFormatter(new LineFormatter("%time% :: {%level%} :: %message%\n", 'G:i:s T'));
$logger->attachAdapter($fileAdapter);

$logger->emergency('Something did not work');
$logger->alert('Something did not work');

使用新格式输出的日志

11:18:55 UTC :: {EMERGENCY} :: Something did not work
11:18:55 UTC :: {ALERT} :: Something did not work

以下变量在 LineFormatter 中可用