Laravel / монолог процессора слияния json - PullRequest
0 голосов
/ 08 марта 2020

Я следовал инструкциям по использованию монологического процессора для добавления метаданных в запись журнала, например:

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"
}
...