@nfjs/winston-logger

1.0.1 • Public • Published

@nfjs/winston-logger

ОГЛАВЛЕНИЕ

Используемые понятия

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

Принцип работы

Позволяет сконфигурировать несколько логгеров через конфигурационный файл, в котором заданы настройки для каждого в отдельности. При проходе по конфигурационному файлу недостающие настройки берутся из значений по умолчанию. Все они помещаются в контейнер под меткой loggers. Логгер с кодом default помещается в контейнер под меткой logger.

Конфигурация

Свойство Тип Назначение Значение по умолчанию
levels string Уровни логов winston.config.syslog.levels (emerg,alert,crit,error,warning,notice,info,debug)
defaultMeta Object Набор свойств со значениями, которые дополняют объект лога { instanceName: instance_name }
formats Object Перечень поддерживаемых модулем форматов преобразования лога, каждый со своими возможными настройками { timestamp: {}, errors: { stack: true }, json: {} }
transports Object Набор транспортов в виде объектов. Каждый ключ - отдельный транспорт со своими настройками
.type string Тип транспорта, отвечающий куда отправлять логи. Например, Console,File 'Console'
.options Object Настройки транспорта в зависимости от типа. Часть ниже описана, как общие. Остальные в документации пакета
..handleExceptions boolean Логгировать ли необработанные исключения (uncaughtException) процесса true
..handleRejections boolean Логгировать ли необработанные исключения (uncaughtRejection) процесса true
..level string Уровень ниже которого включительно логгировать события 'info'
..formats Object Аналогично formats. Не рекомендуется использовать из-за бага в библиотеке на данный момент (winston-transport@4.4.0)
Подробнее про все возможные настройки в документации

Настройки логгера по умолчанию выглядят следующим образом

"@nfjs/winston-logger": {
    "default": {
        "levels": "syslog",
        "formats": {
            "timestamp": {},
            "errors": {
                "stack": true
            },
            "json": {}
        },
        "transports": {
            "default": {
                "type": "Console",
                "options": {
                    "handleExceptions": true,
                    "handleRejections": true,
                    "level": "info"
                }
            }
        }
    }
}

Что соответствует коду создания логгера модуля winston

import winston from 'winston';
const logger = winston.createLogger({
    levels: winston.config.syslog.levels,
    format: winston.format.combine(
        winston.format.timestamp(),
        winston.format.errors({ stack: true }),
        winston.format.json(),
    ),
    transports: [new winston.transports.Console({
        level: 'info',
        handleExceptions: true,
        handleRejections: true
    })]
})

Пример использования

Работает только при запущенном полностью приложении, так как помещается в контейнер при старте приложения.

import { container } from '@nfjs/core';
import { v4 } from 'uuid/v4';
// Из контейнера логгеров выбрали настроенный, например, только для интеграционных сервисов
const logger = container.loggers.get('integrations');
// Здесь использовалась возможность "закрелять" часть свойств для последующих вызовов логгирования, чтобы избежать повторений.
const logg = logger.child({ logType: 'integrationFRMR', uuid: v4() });
try {
    logg.info('start');
    // something
    logg.info('end');
} catch (e) {
    logg.info(e);
}

Readme

Keywords

none

Package Sidebar

Install

npm i @nfjs/winston-logger

Weekly Downloads

123

Version

1.0.1

License

MIT

Unpacked Size

12.5 kB

Total Files

7

Last publish

Collaborators

  • bekhtersa
  • mascotze
  • boikovdv
  • untrueme