New: Introducing PHP and Composer Support.Read the Announcement
Socket
Book a DemoInstallSign in
Socket

@nfjs/winston-logger

Package Overview
Dependencies
Maintainers
4
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@nfjs/winston-logger

Logger

latest
npmnpm
Version
1.0.1
Version published
Maintainers
4
Created
Source

@nfjs/winston-logger

ОГЛАВЛЕНИЕ

  • Используемые понятия
  • Принцип работы
  • Конфигурация

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

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

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

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

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

СвойствоТипНазначениеЗначение по умолчанию
levelsstringУровни логовwinston.config.syslog.levels (emerg,alert,crit,error,warning,notice,info,debug)
defaultMetaObjectНабор свойств со значениями, которые дополняют объект лога{ instanceName: instance_name }
formatsObjectПеречень поддерживаемых модулем форматов преобразования лога, каждый со своими возможными настройками{ timestamp: {}, errors: { stack: true }, json: {} }
transportsObjectНабор транспортов в виде объектов. Каждый ключ - отдельный транспорт со своими настройками
.typestringТип транспорта, отвечающий куда отправлять логи. Например, Console,File'Console'
.optionsObjectНастройки транспорта в зависимости от типа. Часть ниже описана, как общие. Остальные в документации пакета
..handleExceptionsbooleanЛоггировать ли необработанные исключения (uncaughtException) процессаtrue
..handleRejectionsbooleanЛоггировать ли необработанные исключения (uncaughtRejection) процессаtrue
..levelstringУровень ниже которого включительно логгировать события'info'
..formatsObjectАналогично 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);
}

FAQs

Package last updated on 24 Jul 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts