radphp / logging
v0.1.0
2016-04-19 18:25 UTC
Requires
- php: >=5.6
- psr/log: 1.0
This package is not auto-updated.
Last update: 2024-09-12 00:26:19 UTC
README
日志库提供使用简单接口的多日志适配器。使用 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-Z
、a-z
、0-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
中可用