segaja/monolog-creator

这些类提供了创建预配置的 monolog 记录器对象的简单工厂。

2.0.1 2023-01-20 14:51 UTC

This package is auto-updated.

Last update: 2024-09-30 01:38:09 UTC


README

这些类提供了创建预配置的 monolog 记录器对象的简单工厂。

Monolog-Creator 目前只支持几个 monolog 的处理器、格式化和处理器。因此,请随意扩展库。

查看 变更日志 以了解主版本之间的更新。

安装

composer require segaja/monolog-creator

示例

最小化

您必须至少配置 _default 记录器和处理程序。

index.php

<?php
require 'vendor/autoload.php';

$config = [
    "handler" => [
        "stream" => [
            "path" => "php://stdout",
        ],
    ],
    "logger" => [
        "_default" => [
            "handler" => ["stream"],
            "level"   => "WARNING",
        ],
    ],
];

$loggerFactory = new \MonologCreator\Factory($config);

$logger = $loggerFactory->createLogger('name');
$logger->addWarning('I am a warning');
?>

不同的记录器

您还可以创建不同的预配置记录器。例如,使用另一个日志级别或处理程序。

index.php

<?php
require 'vendor/autoload.php';

$config = [
    "handler" => [
        "stream" => [
            "path" => "php://stdout",
        ],
    ],
    "logger" => [
        "_default" => [
            "handler" => ["stream"],
            "level"   => "WARNING",
        ],
        "test" => [
            "handler" => ["stream"],
            "level"   => "DEBUG",
        ],
    ],
];

$loggerFactory = new \MonologCreator\Factory($config);

$logger = $loggerFactory->createLogger('test');
$logger->addDebug('I am a debug message');
?>

不同的格式化程序

您可以使用格式化程序配置日志输出。请注意,格式化程序在 formatter 键下有一个通用配置,并且必须将其分配到 handler 部分中的特定处理程序。

$config = [
    "handler" => [
        "stream" => [
            "path"      => "php://stdout",
            "formatter" => "json",
        ],
    ],
    'formatter' => [
        'json'     => [],
    ],
    "logger" => [
        "_default" => [
            "handler" => ["stream"],
            "level"   => "WARNING",
        ],
        "test" => [
            "handler" => ["stream"],
            "level"   => "DEBUG",
        ],
    ],
];

可选的处理程序

您可以选择添加处理程序到您的记录器

$config = [
    "logger" => [
        "test" => [
            "handler" => ["stream"],
            "processors" : ["web"],
            "level"   => "DEBUG",
        ],
    ],
];

支持的处理程序

StreamHandler

$config = [
    "handler" => [
        "stream" => [
            "path"      => "php://stdout",
        ],
    ],
];

UdpHandler(自定义处理程序)

$config = [
    "handler" => [
        'udp' => [
            'host'      => 'localhost',
            'port'      => '9999',
        ],
    ],
];

RedisHandler(使用 predis/predis

要使用 Redis 处理程序,您必须自己创建 Predis 客户端对象并将其设置到工厂中,然后再创建任何记录器。

$config = [
    "handler" => [
        'redis' => [
            "key" => "php_logs",
        ]
    ],
];

$predisClient = new \Predis\Client('tcp://192.168.42.43:6379');
$loggerFactory->setPredisClient($predisClient);

支持格式化程序

JsonFormatter

目前此处不支持任何选项。

$config = [
    'formatter' => [
        'json'     => [],
    ],
];

LineFormatter

所有值都是可选的。布尔值 includeStacktracesallowInlineLineBreaksignoreEmptyContextAndExtra 可以是 "true""false"

$config = [
    'formatter' => [
        'line' => [
            "format"                     => "[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n",
            "dateFormat"                 => "Y-m-d H:i:s",
            "includeStacktraces"         => "true",
            "allowInlineLineBreaks"      => "true",
            "ignoreEmptyContextAndExtra" => "true",
        ],
    ],
];

LogstashFormatter

$config = [
    'formatter' => [
        'logstash'     => [
            "type" => "test-app"
        ],
    ],
];

支持的处理器

WebProcessors

$config = [
    'logger' => [
        '_default' => [
            'handler'   => [
                'stream',
            ],
            "processors"  => ["web"],
            'level' => 'DEBUG',
        ],
    ]
];

RequestID 处理器

为每个请求注入一个随机 UUID,使来自同一请求的多个日志消息更容易跟踪。

$config = [
    'logger' => [
        '_default' => [
            'handler'   => [
                'stream',
            ],
            "processors"  => ["requestId"],
            'level' => 'DEBUG',
        ],
    ]
];

ExtraFieldProcessor

允许您在 context 列表之外添加高级或特定字段到日志数据。这些附加字段将出现在输出的 extra 列表中。

$config = [
    'logger' => [
        '_default' => [
            'handler'   => [
                'stream',
            ],
            "processors"  => ["extraFields"],
            "extraFields" : [
                "extra_key1" : "extra_value1",
                "extra_key2" : "extra_value2"
            ],
            'level' => 'DEBUG',
        ],
    ]
];