npm package: @growth-digital-marketing/logger-package
Description: Logger package to automatically integrate Winston logging in NestJS applications
Author: GDM
Latest version: 1.0.12

# GDM Logger Package


O ```gdm-logger-package``` é um pacote projetado para integrar automaticamente o Winston Logger em projetos desenvolvidos com NestJS. Ele configura um sistema centralizado de logging, permitindo o envio periódico de logs para um endpoint específico, que se comunica com uma aplicação de monitoramento e registro. Essa integração facilita a coleta de métricas e o acompanhamento detalhado dos logs, oferecendo informações precisas e essenciais sobre o funcionamento da aplicação.

Ao utilizar o ```gdm-logger-package```, sua aplicação estará preparada para garantir a integridade do processo de monitoramento da GDM, evitando interrupções e assegurando que os registros sejam monitorados com a máxima eficiência.

## Sumário

- [Instalação](#instalação)
- [Uso](#uso)
- [Serviços e Módulos Disponíveis](#serviços-e-módulos-disponíveis)
- [Configurações Adicionais](#configurações-adicionais)
- [Exemplo de Uso](#exemplo-de-uso)
- [Desenvolvimento](#desenvolvimento)
- [Licença](#licença)

---

## Instalação

Para instalar o pacote, basta usar o comando abaixo:

````bash
npm install @growth-digital-marketing/logger-package
````
Durante a instalação, o pacote verifica se o projeto é um aplicativo NestJS. Se for, ele instalará automaticamente as dependências necessárias para integração com Winston.

---

## Uso

Após a instalação, o pacote estará pronto para uso. Os serviços LoggerService e LogTransportService estão disponíveis para injeção nos seus módulos e serviços NestJS.

### Exemplo de uso do ```LoggerService```
Para registrar logs em diferentes níveis, injete o ```LoggerService``` no seu serviço ou controlador:

````bash
import { Injectable } from '@nestjs/common';
import { LoggerService } from 'my-nest-logger-package';

@Injectable()
export class AppService {
  constructor(private readonly loggerService: LoggerService) {}

  someMethod() {
    this.loggerService.log('Este é um log de informação.');
    this.loggerService.warn('Este é um aviso.');
    this.loggerService.error('Este é um erro.');
  }
}
````
---

## Serviços e Módulos Disponíveis

### ```LoggerModule```
O ```LoggerModule``` é o módulo principal do pacote. Ele provê o ```LoggerService``` e o ```LogTransportService```, disponíveis para serem usados em outros módulos.

### ```LoggerService```
O ```LoggerService``` encapsula o Winston Logger, permitindo registrar logs com diferentes níveis de severidade (```log```, ```warn```, ```error```).

Métodos disponíveis:

- ```log(message: string)```: Registra uma mensagem de informação.
- ```warn(message: string)```: Registra uma mensagem de aviso.
- ```error(message: string)```: Registra uma mensagem de erro.

### ```LogTransportService```
O ```LogTransportService``` é responsável por monitorar o arquivo de log e enviar novas entradas para o endpoint configurado. Ele é executado automaticamente a cada 60 segundos e pode ser customizado para atender a diferentes requisitos de envio de logs.

---

## Configurações Adicionais

O pacote permite outras configurações opcionais que podem ser feitas no arquivo ```logger-config.ts``` localizado no diretório ```config``` do pacote.

Exemplo de configuração:
````bash
import { createLogger, transports, format, Logger } from 'winston';

export const logger: Logger = createLogger({
  level: 'debug', // Nível de logging ajustável
  format: format.combine(
    format.timestamp(),
    format.json()
  ),
  transports: [
    new transports.Console(),
    new transports.File({ filename: 'logs/app.log' }) // Diretório dos logs
  ],
});
````

---

## Exemplo de Uso
Abaixo está um exemplo de uso completo, incluindo o registro de logs e o envio ao endpoint:

````bash
import { Injectable } from '@nestjs/common';
import { LoggerService } from 'my-nest-logger-package';

@Injectable()
export class AppService {
  constructor(private readonly loggerService: LoggerService) {}

  executeTask() {
    // Registra uma mensagem de informação
    this.loggerService.log('Iniciando a tarefa.');

    try {
      // Simulação de lógica de negócio
      // ...
      this.loggerService.log('Tarefa concluída com sucesso.');
    } catch (error) {
      // Registra um erro
      this.loggerService.error('Erro ao executar a tarefa: ' + error.message);
    }
  }
````

---

## Desenvolvimento
Esta aplicação foi projetada e implementada pelo time técnico da **GDM**, utilizando as melhores práticas de desenvolvimento e uma arquitetura modular para garantir escalabilidade, segurança e facilidade de manutenção. 

---

## Licença
Este projeto está licenciado sob a **MIT License**. Sinta-se livre para usá-lo conforme os termos da licença.