Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用Laravel 5.6向Loggly发送json格式的日志条目_Php_Laravel_Monolog_Loggly - Fatal编程技术网

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

Php 如何使用Laravel 5.6向Loggly发送json格式的日志条目,php,laravel,monolog,loggly,Php,Laravel,Monolog,Loggly,我一直遵循我认为正确的设置,将Loggly作为Laravel 5.6的独白频道,但我一直在获取文本字符串,而不是json可搜索的条目。例如: [2018-07-27 14:50:20]local.INFO:array( ‘foo’=>‘bar’, ) 这来自Loggly条目的“unparsed”属性。任何拉伸都不是有效的json 下面是一些相关的代码片段,展示了如何设置loggly通道以及如何触发日志条目 config/logging.php: 'loggly' => [

我一直遵循我认为正确的设置,将Loggly作为Laravel 5.6的独白频道,但我一直在获取文本字符串,而不是json可搜索的条目。例如:

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

这来自Loggly条目的“unparsed”属性。任何拉伸都不是有效的json

下面是一些相关的代码片段,展示了如何设置loggly通道以及如何触发日志条目

config/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');
"laravel/framework": "5.6.21",
"monolog/monolog": "^1.23",
路线:

'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');
"laravel/framework": "5.6.21",
"monolog/monolog": "^1.23",
}))

来自composer.json:

'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');
"laravel/framework": "5.6.21",
"monolog/monolog": "^1.23",
我认为升级到更新的独白版本可能会有所帮助,但在尝试通过composer更新独白时遇到了这种情况:

无法将您的需求解析为可安装的软件包集

问题1

  • laravel/FrameworkV5.6.21需要monolog/monolog~1.12->可由monolog/monolog[1.x-dev]满足
  • laravel/FrameworkV5.6.21需要monolog/monolog~1.12->可由monolog/monolog[1.x-dev]满足
  • laravel/FrameworkV5.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吗?查看atLogglyHandler,它使用LogglyFormatter扩展JsonFormatter。这似乎是合理的,但最终输出是一个字符串。给出了什么?

明确指定
格式化程序。它可以是以下内容之一:

'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')),
    ]
]

明确指定
格式化程序
。它可以是以下内容之一:

'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')),
    ]
]

在深入研究了monolog和json格式化程序之后,修复非常简单。第一个参数是文本值,第二个参数可以包含一个关联数组,该数组可以转换为json,并且可以在日志中搜索

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

在深入研究了monolog和json格式化程序之后,修复非常简单。第一个参数是文本值,第二个参数可以包含一个关联数组,该数组可以转换为json,并且可以在日志中搜索

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

我认为它应该是“handler_with”而不是“with”,并且它只支持LogglyHandler类的constructur参数-因此“tag”-行在这里不起作用我认为它应该是“handler_with”而不是“with”,并且它只支持LogglyHandler类的constructur参数-因此“tag”-这是genius,正是我刚刚尝试做的。这是genius,正是我刚刚尝试做的。配置对象中的
标记对我不起作用。我必须创建一个自定义程序来将标签添加到消息中。配置对象中的
标记
对我不起作用。我必须创建一个自定义程序来将标签添加到消息中。