2.0.0 • Published 1 year ago

@dlabs71/d-logger v2.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

D-logger

Библиотека для ведения журнала логирования JS/Vue приложений.

NPM Version License

Установка NPM

npm i @dlabs71/d-logger

Использование

Данная библиотека может быть использована в любом js приложении, вне зависимости от фреймворка. Также она предоставляет поддержку подключения к Vue.js приложению через плагин. Для использования в Node или Electron приложениях, где необходимо логирование в файл, используйте библиотеку @dlabs71/d-logger-node.

Подключение к Vue.js приложению

Для использования d-logger во Vue приложении, импортируйте DLoggerPlugin плагин и подключите его.

main.js

import DLoggerPlugin from '@dlabs71/d-logger';

Vue.use(DLoggerPlugin);
// or
const loggerOpts = {
    level: "info"
};
Vue.use(DLoggerPlugin, {
    logConfig: loggerOpts
});

Параметры настройки плагина:

ПараметрТипЗначение по умолчаниюОписание
levelstringdebugУстанавливает уровень логирования
templatefunctionnullФункция определяющая шаблон строки логирования (шаблоны)
appendersarray[]Список апендеров, реализующих класс LogAppender. По умолчанию сразу доступен ConsoleAppender (аппендеры)
stepInStacknumber6Индекс в стеке вызовов ошибки для определения файла и позиции вызова метода логирования. Если библиотека показывает не верный файл вызова метода логирования, то необходимо поменять данный параметр.
dateL10nstringenЛокализация даты в логах (en, ru, ...). Для всех аппендеров по умолчанию.

Далее вы можете использовать её через this.$log как в примере ниже:

example.vue

<template></template>
<script>
export default {
    name: 'example',
    methods: {
        process() {
            this.$log.debug("Starting method process");
            // code method
            this.$log.debug("Ending method process");
        }
    }
}
</script>

Использование логгера без плагина Vue.js

Для использования логгера без плагина Vue.js достаточно импортировать $log из @dlabs71/d-logger. Вы получаете, настроенный по умолчанию, экземпляр класса DLogger. Он будет использовать ConsoleAppender в качестве единственного и основного аппендера логирования (Логгер).

import {$log} from '@dlabs71/d-logger';

function exampleFunc(param1, param2) {
    $log.info("Start exampleFunc with parameters: param1 = ", param1, ", param2 = ", param2);
}

Логгер можно перенастроить, для этого есть метод configure. Про его использование читайте в документации Метод configure.

import {$log} from '@dlabs71/d-logger';

$log.configure({
    level: "error"
});

function exampleFunc(param1, param2) {
    $log.info("Start exampleFunc with parameters: param1 = ", param1, ", param2 = ", param2);
}

Документация

Оглавление

1. Уровни логирования

Уровень логированияПриоритетЦвет
emerg0red
alert1orange
crit2red
error3red
warn4yellow
warning4yellow
notice5blue
info6green
debug7rainbow

Чем больше значение приоритета, тем больше уровней логирования будут отображаться.

  • 0 - будут отображаться только логи с уровнем emerg.
  • 7 - будут отображаться все уровни логирования

warn и warning - это два одинаковых уровня логирования "предупреждение". Создано для удобства использования

2. Логгер

Логгер представляет собой экземпляр класса DLogger. Для управления журналом логирования существуют специальные классы, наследующие класс LogAppender (далее аппендеры). Из коробки доступена 1 реализация:

  • ConsoleAppender - аппендер делегирующий управление журналов логирования реализации console

Также доступен аппендер для логирования в файл FileAppender. Для этого воспользуйтесь библиотекой @dlabs71/d-logger-node

2.1 Методы логирования

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

example.js

import {$log} from '@dlabs71/d-logger';

function exampleFunc(param1, param2) {
    $log.info("Start exampleFunc with parameters: param1 = ", param1, ", param2 = ", param2);
}

Если параметром метода логирования будет являться функция, то при вызове метода она выполниться, а результат будет конвертирован в строку. Когда параметр является объектом или массивом то значение будет преобразовано в строку при помощи JSON.stringify.

2.2 Методы конфигурации и управления аппендерами

2.2.1 Метод configure

Логгер предоставляет метод конфигурации configure. Данный метод принимает объект с параметрами конфигурации, описанные в таблице ниже.

ПараметрТипЗначение по умолчаниюОписание
levelstringdebugустанавливает уровень логирования
templatefunctionnullФункция определяющая шаблон строки логирования сразу для всех аппендеров (шаблоны).
appendersarray[]Список аппендеров реализующих класс LogAppender. По умолчанию сразу устанавливается ConsoleAppender
stepInStacknumber6Индекс в стеке вызовов ошибки для определения файла и позиции вызова метода логирования. Если библиотека показывает не верный файл вызова метода логирования, то необходимо поменять данный параметр.
dateL10nstringenЛокализация даты в логах (en, ru, ...). Для всех аппендеров по умолчанию.

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

import {$log} from '@dlabs71/d-logger';

$log.configure({
    level: "error"
});

2.2.2 Метод clearAppenders

Метод предназначен для очищения списка аппендеров.

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

import {$log} from '@dlabs71/d-logger';

$log.clearAppenders();

2.2.3 Метод addConsoleAppender

Метод для добавления ConsoleAppender. Параметры функции описаны в таблице ниже

ПараметрТипЗначение по умолчаниюОписание
levelstringnullУстанавливает уровень логирования аппендера
colorizebooleantrueИспользовать цвет логирования
templatefunctionnullФункция определяющая шаблон строки логирования аппендера (шаблоны).
stepInStacknumberconfig.stepInStackИндекс в стеке вызовов ошибки для определения файла и позиции вызова метода логирования. Если библиотека показывает не верный файл вызова метода логирования, то необходимо поменять данный параметр.
dateL10nstringenЛокализация даты в логах (en, ru, ...).

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

import {$log} from '@dlabs71/d-logger';

$log.addConsoleAppender("debug", true);

2.2.4 Метод addCustomAppender

Метод для добавления собственной реализации аппендера. Он должен наследовать LogAppender класс.

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

import {$log, LogAppender} from '@dlabs71/d-logger';

class CustomAppender extends LogAppender {

    constructor() {
        super({});
    }

    log(strings, level = null, stepInStack = null, dateL10n = null) {
        const message = this.creatingMessage(strings, level, stepInStack, dateL10n);
        // реализация данного метода
        return message
    }
}

$log.addCustomAppender(new CustomAppender());

2.3 Вспомогательные методы логгера

2.3.1 Метод logProcessEnvs

Метод для печати в журнал логов всех переменных окружения (process.env)

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

import {$log} from '@dlabs71/d-logger';

$log.logProcessEnvs();

//  Process envs:
//  VUE_APP_NODE_ENV=development;
//  VUE_APP_LOG_ENABLED=true;
//  VUE_APP_LOG_LEVEL=debug;
//  VUE_APP_LOG_FILE=true;
//  VUE_APP_LOG_FILE_PREFIX=app;
//  VUE_APP_LOG_FILE_COUNT=5;
//  VUE_APP_STORE_SECRET=345;
//  NODE_ENV=development;
//  BASE_URL=/;
//  IS_ELECTRON=true;

2.3.2 Метод dprsValue

Метод для обезличивания строки

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

import {$log} from '@dlabs71/d-logger';

$log.dprsValue("qwerty$4", "password");
// return "password:8"

$log.dprsValue(null, "password");
// return "password:null"

$log.dprsValue(undefined, "password");
// return "password:undefined"

2.3.3 Метод dprsObj

Метод для обезличивания полей в объекте

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

import {$log} from '@dlabs71/d-logger';

$log.dprsValue({
    login: "daivanov",
    password: "qwerty$4",
    secretKey: "123"
});
// return {
//      login: "daivanov",
//      password: "password:8",
//      secretKey: "secretKey:3"
// }

2.3.4 Метод len

Метод для получения длины строки. Если параметр null или undefined, то возвращает соответствующее значение

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

import {$log} from '@dlabs71/d-logger';

$log.len("qwerty$4");
// return 8

$log.len(null);
// return null

$log.len(undefined);
// return undefined

3. Вспомогательные функции

3.1 Шаблоны события логирования

При помощи метода createTemplate и доступных функций шаблонизации templateFns можно создать любой шаблон отображения события логирования. Метод createTemplate принимает на вход массив функций шаблонизации и возвращает функцию создания строки журнала логирования, принимающую на вход экземпляр класса LogMessageInfo (LogMessageInfo - класс описывающий данные для записи в журнал логирования). Функция шаблонизации представляет собой функцию принимающую на вход также экземпляр класса LogMessageInfo и возвращает строку. Если в списке заготовленных функций шаблонизации templateFns нет нужной вам, то вы всегда можете создать собственную фукции по аналогии с функциями использующимися в templateFns.

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

import {$log, templateFns, createTemplate} from '@dlabs71/d-logger';

let template = createTemplate(
        // выводим уровень логирования
        templateFns.level(),
        // далее выводим символ разделителя "-"
        templateFns.text(' - '),
        // выводим время и дату события
        templateFns.date('DD.MM.YYYY HH:mm:ss'),
        // далее выводим символ разделителя "-"
        templateFns.text(' - '),
        // выводим файл и позицию вызова функции логирования
        templateFns.location(true),
        // переход на новую строку
        templateFns.newLine(),
        // выводим пользовательское сообщение собятия логирования
        templateFns.message(),
        // переход на новую строку
        templateFns.newLine(),
);

// Вывод в журнале логов будет следующим, при использовании данного шаблона
// 
// ERROR - 02.11.2022 09:52:53 - /app/src/main.js:141:54
// user logging message
// 

$log.configure({
    level: "debug",
    template: template
});
2.0.0

1 year ago

1.0.4

1 year ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago