@dlabs71/d-logger
v2.0.0
Published
Logger for JS applications
Downloads
9
Readme
D-logger
Библиотека для ведения журнала логирования JS/Vue приложений.
Установка 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
});
Параметры настройки плагина:
| Параметр | Тип | Значение по умолчанию | Описание
| :------------| :---------| :-------------------------| :-------------------------------------
| level | string | debug | Устанавливает уровень логирования |
| template | function | null | Функция определяющая шаблон строки логирования (шаблоны) |
| appenders | array | [] | Список апендеров, реализующих класс LogAppender
. По умолчанию сразу доступен ConsoleAppender
(аппендеры)|
| stepInStack | number | 6 | Индекс в стеке вызовов ошибки для определения файла и позиции вызова метода логирования. Если библиотека показывает не верный файл вызова метода логирования, то необходимо поменять данный параметр.
| dateL10n | string | en | Локализация даты в логах (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. Уровни логирования
| Уровень логирования | Приоритет | Цвет | | :-----------------------| :-------------| :------------| | emerg | 0 | red | | alert | 1 | orange | | crit | 2 | red | | error | 3 | red | | warn | 4 | yellow | | warning | 4 | yellow | | notice | 5 | blue | | info | 6 | green | | debug | 7 | rainbow |
Чем больше значение приоритета, тем больше уровней логирования будут отображаться.
- 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
. Данный метод принимает объект с параметрами конфигурации, описанные
в таблице ниже.
| Параметр | Тип | Значение по умолчанию | Описание
| :------------| :---------| :-------------------------| :-------------------------------------
| level | string | debug | устанавливает уровень логирования
| template | function | null | Функция определяющая шаблон строки логирования сразу для всех аппендеров (шаблоны).
| appenders | array | [] | Список аппендеров реализующих класс LogAppender
. По умолчанию сразу устанавливается ConsoleAppender
| stepInStack | number | 6 | Индекс в стеке вызовов ошибки для определения файла и позиции вызова метода логирования. Если библиотека показывает не верный файл вызова метода логирования, то необходимо поменять данный параметр.
| dateL10n | string | en | Локализация даты в логах (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
. Параметры функции описаны в таблице ниже
| Параметр | Тип | Значение по умолчанию | Описание | :------------| :--------| :---------------------------| :------------------------------------- | level | string | null | Устанавливает уровень логирования аппендера | colorize | boolean | true | Использовать цвет логирования | template | function | null | Функция определяющая шаблон строки логирования аппендера (шаблоны). | stepInStack | number | config.stepInStack | Индекс в стеке вызовов ошибки для определения файла и позиции вызова метода логирования. Если библиотека показывает не верный файл вызова метода логирования, то необходимо поменять данный параметр. | dateL10n | string | en | Локализация даты в логах (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
});