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 без дополнительных неймспейсов;