<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          LoggerOne高效簡約的 PHP 日志類庫實(shí)現(xiàn)

          聯(lián)合創(chuàng)作 · 2023-09-30 00:08

          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ò)展,為了性能請盡量確保它是批量完成寫操作的。

          瀏覽 9
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久爱成人片 | 欧美精品aa | 色大香蕉视频 | 日韩熟女一区二区 | 成人性爱片一区 |