webarchitect609 / log-tools
PSR-3 兼容的日志工具
v2.0.1
2024-06-28 15:24 UTC
Requires
- php: ^7.4 || ^8.0
- monolog/monolog: ^1.24
- psr/log: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.29
- phpunit/phpunit: ^9.6
- roave/security-advisories: dev-master
README
PSR-3 兼容的日志工具
功能
- 正确记录任何异常:带有堆栈跟踪,带有所有之前的异常等
- 每日日志记录器:设置以 'Y_m_d' 时间戳为文件名的日志文件目录
安装
composer require webarchitect609/log-tools
使用
LogExceptionTrait
在想要以更便捷的方式记录异常的类中,使用 \WebArch\LogTools\Traits\LogExceptionTrait
代替 \Psr\Log\LoggerAwareTrait
。不要忘记实现 \Psr\Log\LoggerAwareInterface
。
当发生异常或错误时,请随意使用 logException()
方法来优雅且简单地记录。默认情况下启用异常链,但如果你不需要它,可以使用 setChaining(false)
方法。
use Monolog\Handler\StreamHandler; use Monolog\Logger; use Psr\Log\LoggerAwareInterface; use Psr\Log\LogLevel; use WebArch\LogTools\Traits\LogExceptionTrait; class FooService implements LoggerAwareInterface { use LogExceptionTrait; public function __construct() { $this->setLogger( new Logger( 'FooLogger', [new StreamHandler(sys_get_temp_dir() . '/foo-service.log')] ) ); } public function bar() { try { throw new LogicException('Exception occurs in ' . __METHOD__); } catch (Throwable $exception) { /** * Exception will be logged with it's type, message, code, file, line and stack trace. */ $this->logException($exception, LogLevel::CRITICAL, ['var1' => 'ABC']); } } }
MonologLoggerFactory
使用 \WebArch\LogTools\Factory\MonologLoggerFactory
简化基于每日的日志创建。
use WebArch\LogTools\Enum\SystemStream; use WebArch\LogTools\Factory\MonologLoggerFactory; $debug = false; $loggerFactory = new MonologLoggerFactory('/tmp/log/www', $debug); $logger = $loggerFactory->createFileLogger('bar', 'foo/baz.log', SystemStream::STDERR); /** * Creates `/tmp/log/www/foo/baz.log` * and outputs `[2019-02-15 12:42:59] bar.INFO: Hello, world! [] []` there * and to the STDERR. */ $logger->info( 'Hello, world!' );
已知问题
目前没有。