ytake / laravel-fluent-logger
laravel和lumen的fluent logger
7.0.0
2024-05-08 14:22 UTC
Requires
- php: ^8.1
- fluent/logger: ^1.0
- illuminate/config: ^10.0 | ^11.0
- illuminate/container: ^10.0 | ^11.0
- illuminate/contracts: ^10.0 | ^11.0
- illuminate/events: ^10.0 | ^11.0
- illuminate/log: ^10.0 | ^11.0
- illuminate/support: ^10.0 | ^11.0
- monolog/monolog: ^3.0
Requires (Dev)
- doctrine/coding-standard: ^8.2
- illuminate/filesystem: ^10.0 | ^11.0
- php-coveralls/php-coveralls: ^2.4
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.0
- slevomat/coding-standard: ^6.4
- squizlabs/php_codesniffer: ^3.5
README
laravel的fluent logger(包含Fluentd处理器)
版本
用法
laravel安装
使用Composer安装此包
$ composer require ytake/laravel-fluent-logger
或composer.json
"require": { "ytake/laravel-fluent-logger": "^6.0" },
支持自动发现(^Laravel5.5)
laravel
你的config/app.php
'providers' => [ \Ytake\LaravelFluent\LogServiceProvider::class, ]
发布配置
- 基本
$ php artisan vendor:publish
- 使用标签选项
$ php artisan vendor:publish --tag=log
- 使用提供者
$ php artisan vendor:publish --provider="Ytake\LaravelFluent\LogServiceProvider"
对于Lumen
使用 Ytake\LaravelFluent\LumenLogServiceProvider
bootstrap/app.php
$app->register(\Ytake\LaravelFluent\LumenLogServiceProvider::class);
Lumen将使用你项目根目录中的config目录中复制的配置文件。
cp vendor/ytake/laravel-fluent-logger/src/config/fluent.php config/
配置
编辑config/fluent.php
return [ 'host' => env('FLUENTD_HOST', '127.0.0.1'), 'port' => env('FLUENTD_PORT', 24224), /** @see https://github.com/fluent/fluent-logger-php/blob/master/src/FluentLogger.php */ 'options' => [], /** @see https://github.com/fluent/fluent-logger-php/blob/master/src/PackerInterface.php */ // specified class name 'packer' => null, // optionally override Ytake\LaravelFluent\FluentHandler class to customize behaviour 'handler' => null, 'processors' => [], 'tagFormat' => '{{channel}}.{{level_name}}', ];
添加了config/logging.php
return [ 'channels' => [ 'stack' => [ 'driver' => 'stack', // always added fluentd log handler // 'channels' => ['single', 'fluent'], // fluentd only 'channels' => ['fluent'], ], 'fluent' => [ 'driver' => 'fluent', 'level' => 'debug', ], 'single' => [ 'driver' => 'single', 'path' => storage_path('logs/laravel.log'), 'level' => 'debug', ], 'daily' => [ 'driver' => 'daily', 'path' => storage_path('logs/laravel.log'), 'level' => 'debug', 'days' => 7, ], 'slack' => [ 'driver' => 'slack', 'url' => env('LOG_SLACK_WEBHOOK_URL'), 'username' => 'Laravel Log', 'emoji' => ':boom:', 'level' => 'critical', ], 'syslog' => [ 'driver' => 'syslog', 'level' => 'debug', ], 'errorlog' => [ 'driver' => 'errorlog', 'level' => 'debug', ], ], ];
或自定义 / 使用 via
return [ 'channels' => [ 'custom' => [ 'driver' => 'custom', 'via' => \Ytake\LaravelFluent\FluentLogManager::class, ], ] ];
fluentd配置示例
## match tag=local.** (for laravel log develop)
<match local.**>
type stdout
</match>
示例(生产环境)
<match production.**>
type stdout
</match>
更多
对于lumen
fluentd配置示例(lumen)
<match lumen.**>
type stdout
</match>
标签格式
标签格式可以配置为从LogEntry对象中获取变量。这将被用于匹配fluent中的标签。
{{channel}}
将是配置在APP_ENV
中的Laravel当前环境,而不是来自config/logging.php
的日志通道。
{{level_name}}
将是日志级别的字符串版本。
{{level}}
是日志级别的数值。调试 == 100等。
您还可以使用存在于LogEntry::$extra
中的变量。
$l = new \Monolog\LogRecord(extra: ['foo' => 'bar']);
给定一条消息,您可以使用标签格式myapp.{{foo}}
生成标签myapp.bar
。
Monolog处理器
您可以通过在fluent.php
配置中的processors
数组中添加处理器来向Monolog处理器添加处理器。
config/fluent.php
'processors' => [function (\Monolog\LogRecord $record) { $record->extra['cloudwatch_log_group'] = 'test_group'; return $record; }],
或者,您可以通过传递处理器的类名。这有助于保持您的配置与config:cache
兼容。
config/fluent.php
'processors' => [CustomProcessor::class],
CustomProcessor.php
class CustomProcessor { public function __invoke(\Monolog\LogRecord $record) { $record->extra['cloudwatch_log_group'] = 'test_group'; return $record; } }
作者
许可证
laravel-fluent-logger的代码是在MIT许可证的条款下分发的。