donchev/simple-logger

PHP项目的简单日志记录器

2.1.0 2021-03-24 11:09 UTC

This package is auto-updated.

Last update: 2024-09-24 19:56:32 UTC


README

一个符合PSR-3的PHP日志库。

安装

composer require donchev/simple-logger

简单用法

<?php

require_once __DIR__ . '/vendor/autoload.php';

$logger = new \Donchev\Log\Loggers\FileLogger('file.log');

$logger->debug('Log me');
输出
[2021-03-18 10:03:11 CET] [DEBUG]: Log me 

高级用法

<?php

require_once __DIR__ . '/vendor/autoload.php';

$config = [
    'line_format' => '[%s] [%s]: %s %s',
    'date_format' => 'Y-m-d H:i:s T',
    'file_prefix' => 'pre_',
    'include_context' => true,
    'log_json' => false,
    'include_stack_trace' => true,
];

$logger = new \Donchev\Log\Loggers\FileLogger('file.log', \Psr\Log\LogLevel::INFO, $config);

$logger->debug('This message will not be logged in');
$logger->info(
    'Some cool message',
    [
        'Additional info' => 'I am the additional info',
        'An array of info' => [
            'Key A' => 'Content',
            'Key B' => [1, 2, 3]
        ],
        'An object' => new DateTime(),
    ]
);

$logger->log(
    \Psr\Log\LogLevel::WARNING,
    'Some cool warning here',
    [
        'exception' => new RuntimeException('Just happened')
    ]
);
输出
[2021-03-18 10:01:20 CET] [INFO]: Some cool message 
Context:
(
    [Additional info] => I am the additional info
    [An array of info] => Array
        (
            [Key A] => Content
            [Key B] => Array
                (
                    [0] => 1
                    [1] => 2
                    [2] => 3
                )

        )

    [An object] => DateTime Object
        (
            [date] => 2021-03-18 10:01:20.256324
            [timezone_type] => 3
            [timezone] => Europe/Berlin
        )

)
[2021-03-18 10:01:20 CET] [WARNING]: Some cool warning here 
Context:
(
    [exception] => RuntimeException: Just happened in C:\dev\simple-logger-test\index.php:24
Stack trace:
#0 {main}
)

可用的日志记录器

有5种不同的日志记录器类可供选择

\Donchev\Log\Loggers\FileLogger
\Donchev\Log\Loggers\OutputLogger
\Donchev\Log\Loggers\StdOutLogger
\Donchev\Log\Loggers\StdErrLogger
\Donchev\Log\Loggers\NullLogger

最小日志级别

您可以通过构造函数设置最小日志级别,传入一个Psr\Log\LogLevel作为参数。如果设置,则不会记录低于该优先级的消息。

日志级别优先级

LogLevel::EMERGENCY => 7,
LogLevel::ALERT => 6,
LogLevel::CRITICAL => 5,
LogLevel::ERROR => 4,
LogLevel::WARNING => 3,
LogLevel::NOTICE => 2,
LogLevel::INFO => 1,
LogLevel::DEBUG => 0,

日志消息插值

您可以在消息中使用占位符,如描述PSR-3标准中。

示例

$logger = new FileLogger('file.log');
$logger->info(
    'Here comes the placeholder: {foo}!',
    ['foo' => 'Hi there from within the context']
);
输出
[2021-03-18 10:43:56 CET] [INFO]: Here comes the placeholder: Hi there from within the context! 
Context:
(
    [foo] => Hi there from within the context
)

日志选项

您可以通过构造函数传递一个选项数组。

示例

$logger = new \Donchev\Log\Loggers\OutputLogger(\Psr\Log\LogLevel::WARNING, [
    'file_prefix' => '',
    'include_context' => true,
    'log_json' => false,
    'one_line_log' => true,
]);

可用选项

作者

Donchev

许可协议

MIT许可协议(MIT)

版权所有 © 2021 Donchev

在此特此授予任何人免费获得此软件和相关文档副本(“软件”)的权利,不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许软件提供者这样做,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“现状”提供,不提供任何形式的保证,明示或暗示,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任负责,无论这些责任是因合同、侵权或其他原因产生的,无论是在软件或其使用或操作中产生的。