php - 如何使用 Laravel 5.6 将 json 格式的日志条目发送到 Loggly
问题描述
我已经按照我认为将 Loggly 设置为 Laravel 5.6 的 Monolog 频道的正确设置,但我不断获取文本字符串而不是 json 可搜索条目。例如:
[2018-07-27 14:50:20] local.INFO: array ('foo' => 'bar', )
这来自 Loggly 条目的“未解析”属性。无论如何都不是有效的json!!!
下面是一些相关的代码片段,展示了如何设置 loggly 通道以及如何触发日志条目。
配置/日志记录.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');
});
来自作曲家.json:
"laravel/framework": "5.6.21",
"monolog/monolog": "^1.23",
我想也许升级到更新的独白版本可能会有所帮助,但在尝试通过作曲家更新独白时遇到了这个问题:
您的要求无法解决为一组可安装的软件包。
问题 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。这似乎是明智的,但最终输出是一个字符串。是什么赋予了?
解决方案
明确指定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')),
]
]
推荐阅读
- python - 不明白如何在桑基图中绘制我的数据框
- c++ - 卡在使用蒙特卡洛积分法?
- python - ListField(ReferenceField(x)) 查询 mongoengine
- antlr - ANTLR - 为什么未使用的词汇规则会影响语法的功能?
- pandas - 用散景绘制可变数量的线/曲线
- xamarin.forms - 获取当前活动 Xamarin 表单
- python - 提高 for 循环效率
- javascript - Javascript:具有数组值的键
- vba - 如何在 MS-Word 中删除不同格式的段落标记
- javascript - 在 js 中转到 goto 的另一种方法