webarchitect609/log-tools

PSR-3 兼容的日志工具

v2.0.1 2024-06-28 15:24 UTC

This package is auto-updated.

Last update: 2024-08-28 15:48:47 UTC


README

Travis Build Status Latest version Downloads PHP version License More stuff from me

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!'
);

已知问题

目前没有。

许可证 & 作者信息

BSD-3-Clause