index0h/yii2-log

许多 Yii2 日志目标

安装次数: 172,286

依赖关系: 0

建议者: 0

安全性: 0

星标: 49

关注者: 6

分支: 14

开放问题: 4

类型:yii2-extension

0.0.3 2015-05-24 22:32 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:27:12 UTC


README

Build Status Latest Stable Version Dependency Status Scrutinizer Quality Score Code Coverage Total Downloads License

不同的 Yii2 日志传输方式

现在可用

  • ElasticsearchTarget
  • LogstashFileTarget
  • LogstashTarget
  • RedisTarget

安装

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

php composer.phar require --prefer-dist index0h/yii2-log "0.0.3"

或在 composer.json 的 require 部分添加一行

"index0h/yii2-log": "0.0.3"

使用

常用属性

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

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

ElasticsearchTarget

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

扩展 yii\log\Target,更多选项请参阅 这里

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

LogstashFileTarget

扩展 yii\log\FileTarget,更多选项请参阅 这里

示例 Yii 配置
....
'components' => [
    'log' => [
        'targets' => [
            ['class' => 'index0h\\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' => 'index0h\\log\\LogstashTarget'],
            // Or UDP.
            [
                'class' => 'index0h\\log\\LogstashTarget',
                'dsn' => 'udp://:3333'
            ],
            // Or unix socket file.
            [
                'class' => 'index0h\\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 - 日志服务器的 URL。允许的方案:tcpudpunix - 用于 Unix 套接字文件。

RedisTarget

扩展 yii\log\Target,更多选项请参阅 这里

示例 Yii 配置
....
'components' => [
    'log' => [
        'targets' => [
            ['class' => 'index0h\\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
    • 参数:运行 --coverage --html
  • OK

从控制台运行测试

make test

感谢

@achretien @Archy812 @xt99