LoggerModule
Logger - Под капотом использует debug с некоторым расширением функционала.
Nuxt install
// nuxt.config.js
export default {
modules: [
// При использовании с `axios`, модуль логгера должен быть после `axios`
'shared-front/nuxt/logger',
],
};
Vue install
Vue 2
// main.js
import Vue from 'vue';
import { Plugin, useLoggerSymbol } from 'shared-front/lib/modules/logger';
Vue.use(Plugin);
const app = new Vue({
// For using `useLogger`
provide: {
[useLoggerSymbol]: Vue.prototype.$logger,
},
});
Vue 3
// main.ts
import { createApp } from 'vue';
import { Plugin } from 'shared-front/lib/modules/logger';
import App from './App.vue';
const app = createApp(App);
app.use(Plugin);
Composables
useLogger
import { useLogger } from 'shared-front/lib/modules/logger';
Получение инстанса Logger с дополнительными методами.
log: (name: string, ...args: unknown[]) => void;
warn: (name: string, ...args: unknown[]) => void;
error: (name: string, ...args: unknown[]) => void;
addParam: (key: string, value?: string | number | boolean) => void;
extend: (namespace: string, delimiter?: string) => Logger;
};
Аргументы позволяют сразу провести наследование от Logger.
namespace?: string, delimiter?: string
addParam
Метод, позволяющий добавить кастомный параметр, принимает ключ и значение, как необязательный параметр.
const logger = useLogger();
logger.addParam('foo');
logger.log('message'); // [foo]_app message
const logger = useLogger();
logger.addParam('foo', 'bar')
logger.log('message'); // [foo:bar]_app message
Параметры с самим namespace и друг с другом разделяются через _ => не стоит использовать данный символ в namespace.
extend
Метод, позволяющий расширить существующий логгер, указав дополнительный неймспейс
const logger = useLogger();
logger.log('message'); // app message
const logger2 = logger.extend('foo');
const logger3 = useLogger('bar');
logger2.log('message'); // app:foo message
logger3.log('message'); // app:bar message
Filters
Возможно отфильтровать выводимые логи с помощью простой регулярки, переданной в переменную окружения DEBUG (* - заменяется на .*?)
DEBUG=\\[pm2*- покажет логи, начинающиеся с параметра[pm2;DEBUG=\\[pm2:1\\]*- покажет логи, начинающиеся с параметра[pm2:1];DEBUG=*app- покажет логи, где указанappбез дополнительных неймспейсов;DEBUG=*app:custom- покажет логи, где указанapp:customнеймспейс;DEBUG=*app*- покажет все логи, где присутсвуетapp;
Можно указать несколько фильтров, рязделяя их запятыми:
DEBUG=\\[pm2*, *app- покажет логи, начинающиеся с параметра[pm2и те, где указанappбез дополнительных неймспейсов;