2017-02-16 13 views
0

Я работаю над многопользовательским приложением, где мне нужно записывать гораздо больше данных, чем то, что я передаю в фасад журнала. То, что я имею в виду, каждый раз, когда я делаю это ...Лог контекстных данных (без указания его явно)

Log::info('something happened'); 

я получаю это:

[2017-02-15 18:12:55] local.INFO: что-то случилось

Но я хочу, чтобы получить это:

[2017-02-15 18:12:55] [мой ec2 идентификатор экземпляра] [client_id] local.INFO: что-то случилось

Как вы можете видеть, я регистрирую идентификатор экземпляра EC2 и идентификатор клиента моего приложения. Я, конечно, упрощаю это, так как мне нужно записывать там много других вещей. Когда я потребляю и объединяю эти журналы, наличие этих дополнительных полей делает их невероятно удобными, чтобы понять, что пошло не так и где.

В Zend Framework я обычно подклассифицирую регистратор и добавляю эти дополнительные поля в свой подкласс, но я не уверен, как это сделать с Laravel. Я не могу найти, где создан экземпляр регистратора, чтобы я мог подключить свой собственный регистратор (если это даже путь в Laravel).

Итак, я не спрашиваю, как получить идентификатор экземпляра EC2 и другие вещи, я только спрашиваю, как правильно использовать «горячий провод» регистратора Laravel, чтобы иметь возможность подключать его.

ответ

1

Просто идея ... регистратор в Laravel действительно экземпляр Монолог ... вы можете нажать обработчик на него и делать то, что обработка вы хотите для каждой записи ... вот так ...

<?php 

$logger->pushProcessor(function ($record) { 
    $record['extra']['dummy'] = 'Hello world!'; 

    return $record; 
}); 

В соответствии с документом Laravel вы можете подключиться к конфигурации монолога при загрузке ...

конфигурации пользовательских Монолог

Если вы хотели бы иметь полный контроль над тем, как Монолог является настроен для вашего приложения, вы можете использовать метод configureMonologUsing приложения. Вы должны поместить вызов этого метода в вашем загрузочном файле/app.php прямо перед переменной $ АРР возвращенного файла:

$app->configureMonologUsing(function ($monolog) { 
    $monolog->pushHandler(...); 
}); 

return $app; 

Так вместо того, чтобы просто нажать процессор на экземпляре $ Монолог перешел на крючок ...

Просто идея, я не пробовал это в Ларавеле, но использовал Монолог до ...