hardtyz/yii2-log

许多Yii2日志目标

安装: 9

依赖: 0

建议: 0

安全: 0

类型:yii2-extension

0.0.5 2018-08-07 11:44 UTC

This package is auto-updated.

Last update: 2024-09-22 01:06:15 UTC


README

不同的Yii2日志传输方式

现在可用

  • ElasticsearchTarget
  • LogstashFileTarget
  • LogstashTarget
  • RedisTarget

安装

安装此扩展的首选方式是通过composer

并将以下行添加到composer.json

    "repositories": [
        {
            "url": "https://bitbucket.org/HardTYZ/yii2-log",
            "type": "git"
        }
    ]

并将行添加到composer.json的require部分

"hardtyz/yii2-log": "*"

使用方法

常见属性

  • $emergencyLogFile,默认@app/logs/logService.log

Elasticsearch、Redis和Logstash是外部服务,因此如果它们宕机,我们的日志必须存储在文件中。为此,ElasticsearchTargetLogstashTargetRedisTarget都有$emergencyLogFile选项。它是日志服务宕机时写入文件的别名。

ElasticsearchTarget

将日志存储在Elasticsearch中。所有日志都转换为JSON,因此您可以通过kibana简单地查看它们。

扩展yii\log\Target,更多选项请参见此处

示例配置
....
'components' => [
    'log' => [
        'targets' => [
            ['class' => 'hardtyz\\log\\ElasticsearchTarget'],
        ....
属性
  • index,默认 'yii' - Elasticsearch索引名称。
  • type,默认 'log' - Elasticsearch索引类型。
  • componentName - yii redis组件的名称。

LogstashFileTarget

扩展yii\log\FileTarget,更多选项请参见此处

示例Yii配置
....
'components' => [
    'log' => [
        'targets' => [
            ['class' => 'hardtyz\\log\\LogstashFileTarget'],
        ....
示例Logstash配置(当前版本 1.3.3)
input {
  file {
    type => "yii_log"
    path => [ "path/to/yii/logs/*.log*" ]
    start_position => "end"
    stat_interval => 1
    discover_interval => 30
    codec => "json"
  }
}

filter {
  # ...
}

output {
  stdout => {}
}

LogstashTarget

扩展yii\log\Target,更多选项请参见此处

示例Yii配置
....
'components' => [
    'log' => [
        'targets' => [
            ['class' => 'hardtyz\\log\\LogstashTarget'],
            // Or UDP.
            [
                'class' => 'hardtyz\\log\\LogstashTarget',
                'dsn' => 'udp://:3333'
            ],
            // Or unix socket file.
            [
                'class' => 'hardtyz\\log\\LogstashTarget',
                'dsn' => 'unix:///path/to/logstash.sock'
            ],
        ....
示例Logstash配置(当前版本 1.3.3)
input {
  tcp {
    type => "yii_log"
    port => 3333
    codec => "json"
  }
  # Or UDP.
  udp {
    type => "yii_log"
    port => 3333
    codec => "json"
  }
  # Or unix socket file.
  unix {
    type => "yii_log"
    path => "path/to/logstash.sock"
    codec => "json"
  }
}

filter {
  # ...
}

output {
  stdout => {}
}
属性
  • dsn,默认 tcp://:3333 - 访问logstash服务的URL。允许的方案:tcpudpunix - 用于Unix套接字文件。
  • index,默认 logstash - 访问logstash服务的索引
  • custom,默认 [] - 发送到logstash的自定义字段数组

RedisTarget

扩展yii\log\Target,更多选项请参见此处

示例Yii配置
....
'components' => [
    'log' => [
        'targets' => [
            ['class' => 'hardtyz\\log\\RedisTarget'],
        ....
示例Logstash配置(当前版本 1.3.3)
input {
  redis {
    type => "yii_log"
    key => "yii_log"
    codec => "json"
  }
}

filter {
  # ...
}

output {
  stdout => {}
}
属性
  • key,默认 yii_log - Redis列表键。
  • componentName - yii redis组件的名称。

测试

从IDE运行测试(例如PhpStorm的示例)

  • 选择运行/调试配置 -> 编辑配置
  • 选择添加新配置 -> PHP脚本
  • 类型
    • 文件: /path/to/yii-phar/.test.php
    • 运行参数: run --coverage --html
  • OK

从控制台运行测试

make test

感谢

@achretien @Archy812 @xt99 @index0h

来自

@index0h github