sunvalley-technologies/react-php-file-logger

一个简单的PSR文件日志记录器,用于react php

2.0.0 2020-01-30 05:28 UTC

This package is auto-updated.

Last update: 2024-09-29 05:35:57 UTC


README

一个PSR非阻塞文件日志记录器,用于react php。使用monolog并提供非阻塞的monolog处理器。

安装

composer require sunvalley-technologies/react-php-file-logger

用法

方便的日志记录器,创建一个快速的monolog日志记录器,可用作FileLoggerRotatingFileLoggerStdIOLogger

这些日志记录器只是快速访问以下指定的非阻塞处理器的快捷方式。

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上引起阻塞问题。