【问题标题】:Laravel logging: extra square brackets at end of log lines?Laravel 日志记录:日志行末尾的额外方括号?
【发布时间】:2013-11-24 23:58:13
【问题描述】:

我对 Laravel 很陌生,当我使用它基于 Monolog 的日志记录时,我注意到了,例如Log::info('blah blah'),它写入我的日志文件的行以两组空方括号为后缀。它们有什么用,我该如何关闭它们?他们丝毫没有帮助。我试过深入研究源代码和谷歌搜索,但没有看到任何解释。

例子:

[2013-11-12 09:13:16] log.INFO: Hello world [] []

[2013-11-12 09:13:31] log.INFO:我的愚蠢日志消息 [] []

谢谢!

【问题讨论】:

  • 所以,看起来我可以将参数数组作为第二个参数传递给Log::info() 和朋友,最终以序列化形式显示在第一组括号之间。第二组似乎是用于日志系统可能添加的额外参数。但是有没有一种简单的方法可以让括号只在它们有东西时才出现,而不是继承 Monolog 的部分?
  • docs 描述了这些 contextextra 参数。

标签: php laravel-4 monolog


【解决方案1】:

经过进一步研究,我发现这发生在Monolog\Formatter\LineFormatter。简而言之,括号是空数组的 JSON 表示。不幸的是,Laravel 似乎没有提供一种简单的方法来解决这个问题,所以我最终继承了 Monolog。我在this SO post 发布了详细信息。但由于该帖子不是 Laravel 特定的,我想我会分享如何在 Laravel 上下文中使用这种自定义 LineFormatter

在您的app/start/global.php 中,默认情况下有一个部分定义了日志记录。它看起来像这样:

Log::useDailyFiles(storage_path().'/logs/log-'.php_sapi_name().'.txt');

用这个替换它:

$handler = new Monolog\Handler\StreamHandler(
    storage_path().'/logs/log-'.php_sapi_name().'.txt');
$handler->setFormatter(new My\Fancy\Monolog\LineFormatter());
Log::getMonolog()->pushHandler($handler);

享受吧!

【讨论】:

    【解决方案2】:

    这是一个将 curtisdf 的答案与 this answer by Seldaek 相结合的解决方案,并且不需要继承 Monolog 的 LineFormatter

    假设您的 app/start/global.php 文件包含:

    Log::useFiles(storage_path() . '/logs/laravel.log');
    

    替换为:

    use Monolog\Handler\StreamHandler;
    use Monolog\Logger as MonologLogger;
    use Monolog\Formatter\LineFormatter;
    
    // Use custom LineFormatter, with ignoreEmptyContextAndExtra enabled
    Log::getMonolog()->pushHandler(
        (new StreamHandler(
            storage_path() . '/logs/laravel.log',
            MonologLogger::DEBUG
        ))->setFormatter(new LineFormatter(null, null, true, true))
    );
    

    【讨论】:

      【解决方案3】:

      如果您不介意将 [] 作为 第二个参数 添加到您对 Log:: 的调用中,则不会打印:

      Log::info('My funky log', []);

      打印为:

      My funky log

      这种用法还提醒您可以选择在该数组中传递一个对象,如果您愿意,它将被转储。

      【讨论】:

        猜你喜欢
        • 2010-10-09
        • 2020-01-15
        • 1970-01-01
        • 1970-01-01
        • 2022-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多