Журнал необработанных ошибок в службе Moleculer с Winston - PullRequest
0 голосов
/ 22 сентября 2019

Вот мой тестовый сервис и конфиг молекулы, где я пытаюсь подключить 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.

...