Я смотрел bunyan
для входа в мое приложение nodejs. Я попробовал, и все, кажется, работает очень хорошо. Я пропустил a section на log.child
, но теперь я пытаюсь понять, как его использовать. Я думаю, что это цель - позволить мне указать какой-то специальный идентификатор для записи в журнале, чтобы я мог однозначно идентифицировать, как этот журнал связан с какой-либо другой записью журнала.bunyan log.child правильный кейс?
Если это так, я бы себе сам, используя log.child
в каждом запросе:
var bunyan = require('bunyan');
var log = bunyan.createLogger({name: 'myapp'});
router.post('/submit', function(req, res) {
var logChild = log.child({reqId: uuid.v4()});
logChild.info({ req:req }, req.user.name + ' has called /submit');
saveData(req)
.then(function(data) {
logChild.info({data: data}, req.user.name + ' has saved to DB successfully in /submit');
res.json({'success': 'Saved!'});
})
.error(function(err) {
logChild.error({ err: err }, req.user.name + ' has caused an error in /submit ');
res.status(500).json("error": err});
});
});
Таким образом, если пользователь Bob
сообщений для /submit
дважды в промежуток 30 сек, будет некоторый контекст что дифференцирует между двумя различными вызовами в файле журнала.
То есть, я вижу что-то вроде этого (с контекстом):
Bob has called /submit uuid: 109156be-c4fb-41ea-b1b4-efe1671c5836
Bob has called /submit uuid: 49dlsd7i-dapd-fdio-fei0-sd59fd0ph34d
Bob has saved to DB successfully in /submit uuid: 109156be-c4fb-41ea-b1b4-efe1671c5836
Bob has caused an error in /submit uuid: 49dlsd7i-dapd-fdio-fei0-sd59fd0ph34d
Вместо этого (без контекста):
Bob has called /submit
Bob has called /submit
Bob has saved to DB successfully in /submit
Bob has caused an error in /submit
И так для всех моих маршрутов в моем Nodejs app, я бы создал объект logChild
, а затем использовал logChild
для регистрации записей на этом маршруте.
Могу ли я понимание и реализации использование Случай log.child
правильно?