1.0.0 • Published 9 months ago

@cubos/logs v1.0.0

Weekly downloads
-
License
-
Repository
-
Last release
9 months ago

@cubos/logs

Este módulo ficará responsável por registrar os logs da sua aplicação de forma assíncrona.

Uso (com MongoDB)

No entrypoint do seu projeto, crie uma nova instancia do Logger utilizando o transport de sua escolha:

import { Logger, MongoDB } from "@cubos/logs";
import { create, inject } from "@cubos/utils";
import { MongoClient } from "mongodb";

// aqui uma instância do Logger é criada utilizando o MongoDB como provider
inject(create(Logger).using(MongoDB).getDependency(new MongoClient(env.MONGO_URL))).

A instância criada poderá ser obtida utilizando o tsyringe:

// A instancia ficará disponível através do token 'Logger'
const logger = container.resolve(Logger);

logger.log("api", { message: "hello world" });

Porém é possível registrar tokens alternativos, o que é útil quando se faz necessário utilizar múltiplas instâncias:

import { Logger, MongoDB, Console } from "@cubos/logs";
import { MongoClient } from "mongodb";

inject(
  create(MongoDB).using(MongoDB).getDependency(new MongoClient(env.MONGO_URL)),
  create(Console).using(Console).getDependency(),
);

const loggerMongo = container.resolve(MongoDB);

const loggerConsole = container.resolve(Console);

Tipos de logs

// o log de tipo "api" salvará os logs na collection "api-calls", recomenda-se utilizá-lo para requisiçoes que serão recebidas pelo seus controllers
logger.log("api", { message: "hello world" });

// o log de tipo "external" salvará os logs na collection "external-calls", recomenda-se salvar aqui chamadas http para serviços externos
const external: ExternalAPICallLog = {...}
logger.log("external", external);

Middleware do sdkgen

Para facilitar a integração com o sdkgen o Logger disponibiliza o método sdkgenMiddleware():

Exemplo:

const logger = container.resolve(Logger);

export const sdkgenConfig = {
  controllers: [UserController, EpisodeController],
  port: Number(process.env.PORT ?? 8000),
  middlewares: [showErrorForFatalRequests, logger.sdkgenMiddleware],
};

As chamadas capturadas por este middleware serão do tipo api.

Axios Interceptor

Para facilitar a integração com o Axios o Logger disponibiliza propriedade axiosInterceptor que possui duas funções request e response que podem ser registradas como interceptor na sua instância do axios:

axiosInstance.interceptors.request.use(logger.axiosInterceptor.request);

axiosInstance.interceptors.response.use(logger.axiosInterceptor.response);

As chamadas capturadas por este interceptor serão do tipo external.

1.0.0

9 months ago

0.6.0

1 year ago

0.5.0

1 year ago

0.4.0

1 year ago

0.3.0

1 year ago

0.2.0

1 year ago

0.1.0

1 year ago