v-dem/queasy-log

日志类(目前支持文件系统、控制台和简单电子邮件日志),属于 QuEasy PHP 框架的一部分

1.0.0 2021-08-17 05:53 UTC

This package is auto-updated.

Last update: 2024-09-18 06:40:14 UTC


README

Codacy Badge Build Status codecov Total Downloads License

QuEasy PHP 框架 - 日志器

v-dem/queasy-log

包含与 PSR-3 日志接口兼容的日志类。目前实现了文件系统和控制台日志器。本包包括以下类型的日志

  • 日志器(基础类,可以用作其他日志器的容器)
  • FileSystemLogger
  • ConsoleLogger(支持 ANSI 颜色代码)
  • SimpleMailLogger(封装了 mail() 函数)

特性

  • PSR-3 兼容。
  • 易于使用。
  • 易于扩展。
  • 支持嵌套日志器。
  • 可配置的输出消息格式。

需求

  • PHP 版本 5.3 或更高

文档

请参阅我们的 Wiki 页面

安装

composer require v-dem/queasy-log:master-dev

使用

让我们假设我们有一个以下 config.php

return [
    'logger' => [
        'class' => queasy\log\FileSystemLogger::class, // Logger class
        'processName' => 'test', // Process name, to differentiate log messages from different sources
        'minLevel' => Psr\Log\LogLevel::WARNING, // Message's minimum acceptable log level
        'path' => 'debug.log' // Path to logger output file
    ]
];

创建日志器实例

包含 Composer 自动加载器

require_once('vendor/autoload.php');

创建配置实例(使用 v-dem/queasy-config 包)

$config = new queasy\config\Config('config.php');

或使用数组

$config = include('config.php');

创建日志器实例(在这种情况下,可以省略 class 选项,并且将被忽略)

$logger = new queasy\log\Logger($config);

另一种创建日志器实例的方法(它将创建 $config->logger->class 的实例,默认情况下将使用作为聚合日志器的 queasy\log\Logger

$logger = queasy\log\Logger::create($config);

FileSystemLoggerConsoleLogger 有默认设置,可以在没有配置的情况下使用。默认日志文件路径为 debug.log,默认最小日志级别为 Psr\Log\LogLevel::DEBUG,最大为 LogLevel::EMERGENCY

将消息写入日志

输出警告消息

$logger->warning('Test warning message.');

debug.log 中,您将看到类似以下的内容

2017-12-24 16:13:09.302334 EET test [] [] [WARNING] Test warning message.

链式日志消息

$logger
    ->warning('going strange')
    ->error('cannot connect to the database')
    ->emergency('the website is down');

使用复合/嵌套日志器

config.php:

return [
    [
        'class' => queasy\log\FileSystemLogger::class,
        'path' => 'debug.full.log',
        'minLevel' => Psr\Log\LogLevel::DEBUG,
        [
            'class' => queasy\log\ConsoleLogger::class,
            'minLevel' => Psr\Log\LogLevel::INFO
        ], [
            'class' => queasy\log\SimpleMailLogger::class,
            'minLevel' => Psr\Log\LogLevel::ALERT,
            'mailTo' => '[email protected]',
            'subject' => 'Website Alert'
        ]
    ], [
        'class' => queasy\log\FileSystemLogger::class,
        'path' => 'debug.log',
        'minLevel' => Psr\Log\LogLevel::INFO
    ]
];

使用

$config = new queasy\config\Config('config.php');
$logger = new queasy\log\Logger($config);
$logger->info('Hello, world!');

在日志文件名中使用日期/时间(注意那里的 "%s",它将被当前日期和/或时间替换,格式化方式如 timeLabel 中所述)

config.php:

return [
    [
        'class' => queasy\log\FileSystemLogger::class,
        'path' => 'debug-full.%s.log',
        'timeLabel' => 'Y-m-d',
        'minLevel' => Psr\Log\LogLevel::DEBUG
    ]
];