Я (слегка) опытный пользователь Node.js, впервые пишущий RESTful API. Я использую Bunyan для регистрации запросов к серверу и их выполнения.
Я запутался в поведении, которое я получаю в тестовом коде - я пробовал несколько перестановок в этом коде (в "bunyantest.js") с тем же результатом.
const bunyan = require('bunyan');
var log = bunyan.createLogger({
name: 'testApp',
streams: [{
level: 'info',
stream: process.stdout
}, {
level: 'error',
stream: process.stderr
}]
});
Promise.resolve()
.then(() => {
log.info('Began Dumb object creation.');
var Dumb = {
foo: "foo",
bar: "bar",
baz: "raboof"
};
})
.catch(err => {
log.error(err, 'If this error happened... %s', 'Dumb object creation failed.');
})
.then(() => {
log.info('Tried to reference out-of-scope Dumb object.');
console.log(Dumb.baz);
})
.catch(err => {
log.error(err, 'If this error happened... %s', 'out-of-scope reference failed.');
})
Когда я запускаю "узел bunyantest.js | ./node_modules/.bin/bunyan --level error", я получаю две копиивыдается ошибка: один в виде объекта JSON и один в печатном формате. Если я вместо этого вызываю «--level info», я получаю два довольно печатных оператора информации и затем довольно печатную ошибку с ошибкой JSON в некотором месте (по-видимому, наугад).
Я запутался в двойных сообщениях и не хочу, чтобы постороннее сообщение об ошибке JSON появлялось в журналах, которые я мог бы создать. Что вызывает такое поведение?
Редактировать: здесь приведен пример показания с объектом JSON в первой строке.
{"name":"testApp","hostname":"chris-VirtualBox","pid":1872,"level":50,"err":{"message":"Dumb is not defined","name":"ReferenceError","stack":"ReferenceError: Dumb is not defined\n at Promise.resolve.then.catch.then (/home/chris/bunyantest.js:27:14)\n at <anonymous>\n at process._tickCallback (internal/process/next_tick.js:188:7)\n at Function.Module.runMain (module.js:695:11)\n at startup (bootstrap_node.js:188:16)\n at bootstrap_node.js:609:3"},"msg":"If this error happened... out-of-scope reference failed.","time":"2019-10-16T23:30:13.636Z","v":0}
[2019-10-16T23:30:13.634Z] INFO: testApp/1872 on chris-VirtualBox: Began Dumb object creation.
[2019-10-16T23:30:13.636Z] INFO: testApp/1872 on chris-VirtualBox: Tried to reference out-of-scope Dumb object.
[2019-10-16T23:30:13.636Z] ERROR: testApp/1872 on chris-VirtualBox: If this error happened... out-of-scope reference failed.
ReferenceError: Dumb is not defined
at Promise.resolve.then.catch.then (/home/chris/bunyantest.js:27:14)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
at Function.Module.runMain (module.js:695:11)
at startup (bootstrap_node.js:188:16)
at bootstrap_node.js:609:3