Вот мой тестовый сервис и конфиг молекулы, где я пытаюсь подключить Winston logger с различными транспортными средствами и пытаюсь записать необработанное исключение, но безуспешно.Я пробовал как exceptionHandlers
, так и специальные варианты транспорта
handleExceptions: true,
humanReadableUnhandledException: true
moleculer.config.js
const config = require('config')
const winston = require('winston')
const { extend } = require('moleculer').Logger
module.exports = {
transporter: config.get('transporter.nats.uri'),
serializer: config.get('transporter.serializer'),
namespace: config.get('namespace'),
logger: bindings => extend(winston.createLogger({
format: winston.format.combine(
winston.format.label({ label: bindings }),
winston.format.timestamp(),
winston.format.json()
),
transports: [
//new winston.transports.Console({
// handleExceptions: true,
// humanReadableUnhandledException: true
//}),
new winston.transports.File({
name: 'service-log',
filename: '/tmp/iproc.log',
timestamp: true,
colorize: true,
prettyPrint: true,
json: true,
maxsize: 5242880
})
],
exceptionHandlers: [
new winston.transports.File({
name: 'service-log',
filename: '/tmp/iproc-error.log',
timestamp: true,
colorize: true,
prettyPrint: true,
json: true,
maxsize: 5242880
})
]
}))
}
package.json
часть сценариев
"scripts": {
"dev": "NODE_ENV=dev moleculer-runner service.js --hot"
},
services.js
module.exports = {
name: "iproc",
version: '1.0.0',
actions: {
test (ctx) {
this.logger.info('hello from test: ')
throw new Error('Some error')
},
}
}
Запустить службу
yarn dev
Подключиться к консоли молекулы
moleculer connect nats://localhost:4222 --ns dev
Затем запустить внутри консоли молекулы
call iproc.test
Ожидалось "Некоторая ошибка "появляется в /tmp/iproc-error.log
, но это не так.
Moleculer самостоятельно обрабатывает необработанные исключения?Как регистрировать эти ошибки с помощью выбранного регистратора + транспорта?
Обратите внимание, регистрация необработанных исключений работает, как и ожидалось, когда я тестировал Winston в простом проекте nodejs.