如何使用Laravel 5.6将json格式的日志条目发送到Loggly

问题描述 投票:0回答:2

我已经按照我认为正确设置Loggly作为Laravel 5.6的Monolog频道,但我不断获取文本字符串而不是json可搜索条目。例如:

[2018-07-27 14:50:20] local.INFO:array('foo'=>'bar',)

这来自Loggly条目的'unparsed'属性。任何伸展都不是一个有效的json!

以下是一些相关的代码片段,用于说明如何设置loggly通道以及如何触发日志条目。

配置/的logging.php:

'loggly' => [
        'driver' => 'monolog',
        'handler' => Monolog\Handler\LogglyHandler::class,
        'with' => [
            'token' => env('LOGGLY_KEY'),
            'tag' => str_replace(' ', '_', env('APP_NAME') . '_' . env('APP_ENV')),
        ]
    ]

路线:

Route::get('/', function(){
Log::info(['foo' => 'bar']);
return view('welcome');

});

来自composer.json:

"laravel/framework": "5.6.21",
"monolog/monolog": "^1.23",

我想也许升级到更新的monolog版本可能会有所帮助,但在尝试通过composer更新monolog时遇到了这个问题:

您的要求无法解析为可安装的软件包集。

问题1

  • laravel / framework v5.6.21需要monolog / monolog~1.12 - > monolog / monolog [1.x-dev]可满足。
  • laravel / framework v5.6.21需要monolog / monolog~1.12 - > monolog / monolog [1.x-dev]可满足。
  • laravel / framework v5.6.21需要monolog / monolog~1.12 - > monolog / monolog [1.x-dev]可满足。
  • 只能安装以下之一:monolog / monolog [2.x-dev,1.x-dev]。
  • monolog / monolog ^ 2.0的安装请求 - > monolog / monolog [2.x-dev]可满足。
  • laravel / framework 5.6.21的安装要求 - > laravel / framework [v5.6.21]可满足。

我错过了什么? Monolog不应该将我的日志输出作为json发送给Loggly吗?看看LogglyHandler,它使用了扩展JsonFormatter的LogglyFormatter。这似乎是明智的,但最终输出是一个字符串。是什么赋予了?

php laravel monolog loggly
2个回答
2
投票

在深入了解monolog和json格式化程序后,修复程序最终变得非常简单。第一个参数是文本值,第二个参数可以包含一个转换为json的关联数组,可以在Loggly中搜索。

Log::info('Home Page Loaded',['foo' => 'bar']);

1
投票

明确指定formatter。它可以是以下之一:

'formatter' => Monolog\Formatter\JsonFormatter::class,

要么

'formatter' => 'default',

所以,你的新loggly频道定义看起来像:

'loggly' => [
    'driver' => 'monolog',
    'handler' => Monolog\Handler\LogglyHandler::class,
    'formatter' => Monolog\Formatter\JsonFormatter::class,
    'with' => [
        'token' => env('LOGGLY_KEY'),
        'tag' => str_replace(' ', '_', env('APP_NAME') . '_' . env('APP_ENV')),
    ]
]
© www.soinside.com 2019 - 2024. All rights reserved.