listen/logcollector

用于 Laravel5 的基于 monolog 的日志服务

5.0.1 2019-05-08 11:39 UTC

This package is auto-updated.

Last update: 2024-04-24 18:24:56 UTC


README

基于 Laravel5 的日志记录服务

Latest Stable Version Total Downloads Latest Unstable Version License Monthly Downloads Daily Downloads composer.lock

安装配置

composer require listen/logcollector

修改 config/app.php, 添加服务

'providers' => [
    Listen\LogCollector\LogCollectorServiceProvider::class,
],

修改 config/app.php, 添加 Facade

'aliases' => [
    'LogCollector'  => Listen\LogCollector\Facades\LogCollector::class,
]

生成配置文件 config/logcollector.php

php artisan vendor:publish --provider='Listen\LogCollector\LogCollectorServiceProvider'

示例

1、在配置文件 config/logcollector.php 中添加 Logger

'loggers' => [
    'access' => [
        'channel' => 'access',
        'file'    => storage_path("logs/access.log"),
        'level'   => 'warning',
        'mode'    => 'single'
    ],

    'event' => [
        'channel' => 'event',
        'file'    => storage_path("logs/event.log"),
        'level'   => 'warning',
        'mode'    => 'single'
    ],

    'exception' => [
        'channel' => 'exception',
        'file'    => storage_path("logs/exception.log"),
        'level'   => 'error',
        'mode'    => 'single'
    ],
    ......
]

2、动态添加 Logger

$loggerName = 'event';
// 主动注册日志名,调用时会自动加载
$logCollector = LogCollector::registerLoggerName($loggerName);

// 注册并加载
$logCollector = LogCollector::load($loggerName);

// 注册指定属性的日志
$logger = new Listen\LogCollector\Logger($loggerName);
$logger = $logger->setFile('path/to/file');
$logger = $logger->setMode('默认值是 single'); // 如果不调用此方法,默认的记录模式是 'daily'
$logger = $logger->make();

$logCollector = LogCollector::addLogger($loggerName, $logger);

3、记录日志

$logCollector->event('事件日志文本'); // 等同于 $logCollector->eventInfo('...');
$logCollector->eventError('事件日志错误');

4、获取 Loogger 并记录自定义日志

$logger = $logCollector->getLogger($loggerName);
$logger->pushProcessor(function ($record) {
    $record['extra'] = [
        .....
    ];
    
    return $record;
})->addError($logCollector->getPrefix());

使用 elastic 记录日志

1、配置 elastic

cat config/logcollector.php

<?php

return [
    ......
    'elastic' => [
        'servers' => [
            [
                'host' => env('ES_HOST', '127.0.0.1'),
                'port' => env('ES_PORT', 9200)
            ],
            [
                .......
            ]
    ]
];

2、使用 elastic 记录日志示例

$name   = 'elastic';
$logger = new Logger($name);
$logger = $logger->makeEsLogger();

$logcollector = new LogCollector();
$logcollector->addLogger($name, $logger)->elasticError(json_encode(['message' => 'test elastic', 'title' => 'error']));