Я следовал инструкциям по использованию монологического процессора для добавления метаданных в запись журнала, например:
class CustomizeFormatter
{
public function __invoke($logger)
{
foreach ($logger->getHandlers() as $handler) {
$handler->pushProcessor(function ($record) {
$userid = Auth::user() ? Auth::user()->id : '';
$email = Auth::user() ? Auth::user()->email : '';
$name = Auth::user() ? Auth::user()->name : '';
$req_data = (null !== \Request::all()) ? \Request::all() : '';
$record['extra']['user_id'] = $userid;
$record['extra']['email'] = $email;
$record['extra']['name'] = $name;
$record['extra']['ip'] = \Request::getClientIp();
$record['extra']['path'] = \Request::path();
$record['extra']['action'] = \Request::route()->getActionName();
$record['extra']['server'] = $_SERVER['SERVER_NAME'];
$record['extra']['env'] = App::environment();
return $record;
});
}
}
}
Итак, вызывается Log :: info (['message' => 'my message here' ]) создаст это.
[2020-03-08 19:50:34] qa.INFO: array(
'message' =>'my message here'
)
{
"user_id": 2,
"email": "user@aol.com",
"name": "my name",
"ip": "255.255.255.255",
"path": "v1/mycall",
"request": [],
"env": "qa"
}
возможно ли объединить их в одну единственную json структуру, как это?
[2020-03-08 19:50:34] qa.INFO:
{
"message": "my message here",
"user_id": 2,
"email": "user@aol.com",
"name": "my name",
"ip": "255.255.255.255",
"path": "v1/mycall",
"request": [],
"env": "qa"
}