LoggerOne高效簡約的 PHP 日志類庫實(shí)現(xiàn)
LoggerOne
一個(gè)高效、簡約、靈活高性能的遵循 PSR-3 的 PHP 日志類庫實(shí)現(xiàn)。
特性
天然的緩存特性(Logger實(shí)例屬性),延遲批量寫入。
安裝&使用
Install
$ composer require logger-one/logger-one
默認(rèn)的調(diào)用方式
在默認(rèn)情況下,Logger會(huì)使用FileHandler 和 CommonFormatter 輸出一個(gè)保存在Logger同目錄的命名格式為 %Y%m%d的日志文件。
$logger = LoggerOne\Logger::getInstance(); // Strongly recommend
$message = 'test log message {placeholder1} {placeholder2}';
$replacements = ['placeholder1' => 'Foo', 'placeholder2' => 'bar'];
$logger->info($message, $replacements);
改變默認(rèn)日志文件保存地址
$logFile = './tmp/loggerOne.log'; // Your path where you want $handler = new LoggerOne\Handler\FileHandler($logFile); $logger->setHandler($handler); $logger->info($message);
指定使用特定的Handler/Formatter
$handler = new LoggerOne\Handler\FooHandler();
$handler = new LoggerOne\Formatter\BarFormatter();
$logger->setHandler($handler)->setFormatter($formatter);
$logger->info('some test log message');
立即輸出到日志文件的調(diào)用方法
這樣將不緩存日志內(nèi)容,而把調(diào)用前所有的message立即寫入到標(biāo)的處。
...
$logger->info('some test log message')->flush();
...
定制&擴(kuò)展
Handler的擴(kuò)展方式
將你的擴(kuò)展文件放置到LoggerOne/Handler目錄
<?php
namespace LoggerOne\Handler;
class MySQLHandler implements Handler
{
protected $db;
protected $table_name;
public function __construct(string $table_name, object $dbHandle = null)
{
$this->table_name = $table_name;
$this->db = $dbHandle;
}
public function write($messages)
{
$batchData = [];
foreach ($messages as $level => $message) {
$batchData[] = ['level' => $level, 'message' => $message, 'created' => time()];
}
$this->db->insertBatch($this->table_name, $batchData);
}
}
使用擴(kuò)展
$logger = new LoggerOne\Logger();
$handler = new LoggerOne\Handler\MysqlHandler($yourLogTableName, $yourDbHandle);
$logger->setHandler($handler);
$logger->info('some test log message');
Formatter的擴(kuò)展方式
聰明的你,你可以按你想發(fā)靈活的編寫你希望的Formatter處理類,過程和Handler擴(kuò)展流程同理,放到Formatter目錄就可以開始使用了。
注意
如果你不使用composer, 請記得用你的方式加載所有必須的依賴類庫。
如果你做了Handler擴(kuò)展,為了性能請盡量確保它是批量完成寫操作的。
評論
圖片
表情
