sunvalley-technologies / react-php-file-logger
一个简单的PSR文件日志记录器,用于react php
2.0.0
2020-01-30 05:28 UTC
Requires
- php: ~7.2
- monolog/monolog: ^2 || ^1.23
- psr/log: ^1.1
- react/event-loop: ^1.0 || ^0.5 || ^0.4 || ^0.3.5
- react/promise: ^2.3 || ^1.2.1
- react/promise-stream: ^1.1
- react/stream: ^1.0 || ^0.7.6
Requires (Dev)
- phpunit/phpunit: ~6.0|~7.0
README
一个PSR非阻塞文件日志记录器,用于react php。使用monolog并提供非阻塞的monolog处理器。
安装
composer require sunvalley-technologies/react-php-file-logger
用法
方便的日志记录器,创建一个快速的monolog日志记录器,可用作FileLogger
、RotatingFileLogger
和StdIOLogger
。
这些日志记录器只是快速访问以下指定的非阻塞处理器的快捷方式。
Monolog/StreamHandler
use Monolog\Logger; use React\Stream\WritableResourceStream; use SunValley\LoopUtil\FileLogger\Monolog\StreamHandler; $logger = new Logger('name'); $loop = \React\EventLoop\Factory::create(); $logger->pushHandler(new StreamHandler(new WritableResourceStream(STDOUT, $loop))); $logger->info('Message!!!'); $loop->run();
Monolog/StdIOHandler
use Monolog\Logger; use SunValley\LoopUtil\FileLogger\Monolog\StdIOHandler; $logger = new Logger('name'); $loop = \React\EventLoop\Factory::create(); $logger->pushHandler(new StdIOHandler($loop)); $logger->info('Message!!!'); $loop->run();
Monolog/FileHandler
use Monolog\Logger; use SunValley\LoopUtil\FileLogger\Monolog\FileHandler; $logger = new Logger('name'); $loop = \React\EventLoop\Factory::create(); $logFile = __DIR__ . '/test.log'; // expect log file like test-1999-12-31.log $logger->pushHandler(new FileHandler($loop, $logFile)); $logger->info('Message!!!'); $loop->run();
注意
从版本2开始,这个库移除了对react/filesystem的支持和RotatingFileHandler
,以简化并按顺序写入。旧版本仍然可以很好地工作,但从性能角度来看,保留一些子进程以处理某些日志可能并不理想。
从版本2开始,这个库以n
(O_NONBLOCK
) 打开文件,并以可写流的形式处理文件。这可能在Windows上不起作用,甚至可能不是真正的非阻塞打开,但流本身将是非阻塞的。它还默认以日期前缀(可禁用)打开日志文件,并监听SIGHUP信号以关闭和重新打开文件流。这简单地替换了“循环日志文件”。请使用logrotate
进行更好的文件循环。由于日志文件流只打开一次,因此这实际上不应在Windows上引起阻塞问题。