zoukankan      html  css  js  c++  java
  • LoggerOne

    LoggerOne

    一个高效、简约、灵活高性能的遵循 PSR-3 的 PHP 日志类库实现。

    特性

    天然的缓存特性(Logger实例属性),延迟批量写入。

    安装&使用

    Install

    $ composer require logger-one/logger-one

    默认的调用方式

    在默认情况下,Logger会使用FileHandler 和 CommonFormatter 输出一个保存在Logger同目录的命名格式为 %Y%m%d的日志文件。

    $logger = LoggerOneLogger::getInstance();  // Strongly recommend
    
    $message = 'test log message {placeholder1} {placeholder2}';
    
    $replacements = ['placeholder1' => 'Foo', 'placeholder2' => 'bar'];
    
    $logger->info($message, $replacements);

    改变默认日志文件保存地址

    $logFile = './tmp/loggerOne.log'; // Your path where you want
    
    $handler = new LoggerOneHandlerFileHandler($logFile);
    
    $logger->setHandler($handler);
    
    $logger->info($message);

    指定使用特定的Handler/Formatter

    $handler = new LoggerOneHandlerFooHandler();
    
    $handler = new LoggerOneFormatterBarFormatter();
    
    $logger->setHandler($handler)->setFormatter($formatter);
    
    $logger->info('some test log message');

    立即输出到日志文件的调用方法

    这样将不缓存日志内容,而把调用前所有的message立即写入到标的处。

    ...
    $logger->info('some test log message')->flush();
    ...

    定制&扩展

    Handler的扩展方式

    将你的扩展文件放置到LoggerOne/Handler目录

    <?php
    namespace LoggerOneHandler;
    
    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);
        }
    }

    使用扩展

    $logger = new LoggerOneLogger();
    
    $handler = new LoggerOneHandlerMysqlHandler($yourLogTableName, $yourDbHandle);
    
    $logger->setHandler($handler);
    
    $logger->info('some test log message');

     Formatter的扩展方式

    聪明的你,你可以按你想发灵活的编写你希望的Formatter处理类,过程和Handler扩展流程同理,放到Formatter目录就可以开始使用了。

    注意

    • 如果你不使用composer, 请记得用你的方式加载所有必须的依赖类库。

    • 如果你做了Handler扩展,为了性能请尽量确保它是批量完成写操作的。

    Github地址:https://github.com/lijiebin/LoggerOne

  • 相关阅读:
    ACM常用算法及练习(2)
    ACM常用算法及练习(1)
    ACM进阶计划
    《算法艺术与信息学竞赛》题目-提交方式对照表
    ACM之Java速成(4)
    ACM之Java速成(3)
    ACM之Java速成(2)
    ACM之Java速成(1)
    uva 11520
    uva 10755
  • 原文地址:https://www.cnblogs.com/lijiebin/p/7046067.html
Copyright © 2011-2022 走看看