资讯专栏INFORMATION COLUMN

LoggerOne - 高效、简约、强扩展性PHP日志类库

Soarkey / 2143人阅读

摘要:一个高效简约灵活高性能的遵循的日志类库实现。特性天然的缓存特性实例属性,延迟批量写入。注意如果你不使用请记得用你的方式加载所有必须的依赖类库。如果你做了扩展,为了性能请尽量确保它是批量完成写操作的。

LoggerOne

One Efficient & Light & Flexible high performance PHP log implemention of PSR-3
一个高效、简约、灵活高性能的遵循PSR-3的PHP日志类库实现。

特性/Features

Inherently cached message record using PHP object attribute.
天然的缓存特性(Logger实例属性),延迟批量写入。

安装&使用/Istall&Usage Install
$ composer require logger-one/logger-one
Invoke by default mode - 默认的调用方式 Will using FileHandler create a log file named for %Y%m%d and appendix .log at LoggerOne root folder, ervery message as line with the original - 在默认情况下,Logger会使用FileHandlerCommonFormatter 输出一个保存在Logger同目录的命名格式为 %Y%m%d的日志文件。
$logger = LoggerOneLogger::getInstance();  // Strongly recommend

$message = "test log message {placeholder1} {placeholder2}";

$replacements = ["placeholder1" => "Foo", "placeholder2" => "bar"];

$logger->info($message, $replacements);
Change FileHandler default path - 改变默认日志文件保存地址
$logFile = "./tmp/loggerOne.log"; // Your path where you want

$handler = new LoggerOneHandlerFileHandler($logFile);

$logger->setHandler($handler);

$logger->info($message);
Specific Handler & Formatter - 指定使用特定的Handler/Formatter
$handler = new LoggerOneHandlerFooHandler();

$handler = new LoggerOneFormatterBarFormatter();

$logger->setHandler($handler)->setFormatter($formatter);

$logger->info("some test log message");
Flush log message immediately - 立即输出到日志文件的调用方法 Once calling flush method will write all previous message by handler - 这样将不缓存日志内容,而把调用前所有的message立即写入到标的处。
...
$logger->info("some test log message")->flush();
...
定制&扩展/Customization&Extending Handler Extension Simple - Handler的扩展方式 Put your own MySQLHandler.php in LoggerOneHandler folder - 将你的扩展文件放置到LoggerOne/Handler目录
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);
    }
}
Use MySQLHandler.php - 使用扩展
$logger = new LoggerOneLogger();

$handler = new LoggerOneHandlerMysqlHandler($yourLogTableName, $yourDbHandle);

$logger->setHandler($handler);

$logger->info("some test log message");
Formatter Extension Simple - Formatter的扩展方式 The way just like Handler extending - 聪明的你,你可以按你想发灵活的编写你希望的Formatter处理类,过程和Handler扩展流程同理,放到Formatter目录就可以开始使用了。 注意/Notice

If you have not using composer, should remember load all dependency class in your way. - 如果你不使用composer, 请记得用你的方式加载所有必须的依赖类库。

Try to keep your handler write in batches for performace - 如果你做了Handler扩展,为了性能请尽量确保它是批量完成写操作的。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/23088.html

相关文章

  • PHP框架中的日志系统

    摘要:一的几个函数异常捕获自定义处理函数注册错误捕获自定义处理函数注册程序执行时异常终止错误捕获处理函数注册这三个函数在错误处理控制中给开发者提供了很大的自主空间,在日志系统中记录日志信息有他们的功劳。下面要说的类库是借鉴了日志系统的设计。 引言 接触过php框架的朋友们可能都知道,日志在项目中的重要作用了,他可以帮助我们定位错误的位置,让程序更友好(处理得当的话不会直接抛出一大堆只有程...

    ningwang 评论0 收藏0
  • thinkphp源码分析(一)—开门篇

    摘要:源码分析开门篇生命周期入口文件用户发起的请求都会经过应用的入口文件,通常是文件。注册错误和异常机制执行注册错误和异常处理机制。由三部分组成应用关闭方法错误处理方法异常处理方法注册应用关闭方法是为了便于拦截一些系统错误。 源码分析—开门篇 thinkphp生命周期 1、入口文件 用户发起的请求都会经过应用的入口文件,通常是 ==public/index.php==文件。当然,你也可以更改...

    flybywind 评论0 收藏0
  • IMI 基于 Swoole 开发的协程 PHP 开发框架 常驻内存、协程异步非阻塞

    摘要:介绍是基于开发的协程开发框架,拥有常驻内存协程异步非阻塞等优点。宇润我在年开发并发布了第一个框架,一直维护使用至今,非常稳定,并且有文档。于是我走上了开发的不归路 showImg(https://segmentfault.com/img/bVbcxQH?w=340&h=160); 介绍 IMI 是基于 Swoole 开发的协程 PHP 开发框架,拥有常驻内存、协程异步非阻塞IO等优点。...

    airborne007 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<