【问题标题】:in search of a realtime php cli log system with verbosity levels寻找具有详细级别的实时 php cli 日志系统
【发布时间】:2021-03-07 04:33:56
【问题描述】:

我正在寻找一个日志系统,它可以使用不同的详细级别并立即刷新到文件或控制台。我和 yii2 一起工作。他们的 Yii2 日志很好,有信息、调试、警告、错误级别。但我无法让它实时工作以在屏幕上刷新。我尝试将flushInterval 设置为 1 甚至 0,但不起作用。 yii2 日志方法有application 参数,所以我可以过滤哪些部分被记录,以防某些模块出现错误。我的许多 cli 应用程序都不会死机,因此日志只会在数小时后像洪水一样出现。

也许有一个完全不同的作曲家包可以做同样的事情。

谢谢。

【问题讨论】:

    标签: php logging yii2 real-time verbosity


    【解决方案1】:

    日志分为两个级别:

    1. 调度员级别由Dispatcher::$flushInterval控制。
    2. Target::$exportInterval控制的日志目标级别。

    所以除了flushInterval,你还需要为给定的目标配置exportInterval,如果你想一个一个地导出每一个日志:

    'log' => [
        'flushInterval' => 1,
        'targets' => [
            'file' => [
                'class' => yii\log\FileTarget::class,
                'exportInterval' => 1,
                'levels' => ['trace', 'info'],
            ],
        ],
    ],
    

    但是在长时间运行的进程中完成每个任务后调用Yii::$app->log->flush(true) 可能会获得更好的性能。因此,如果您在控制台命令中处理 1k 模型,则在每个模型之后运行 Yii::$app->log->flush(true) - 它应该大大减少记录器开销并且仍然非常接近“实时”(只要处理一个模型不需要太多时间)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      • 2020-06-07
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      • 2012-11-10
      • 1970-01-01
      相关资源
      最近更新 更多