@adatechnology/logger 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +50 -10
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -16,17 +16,17 @@ import { LoggerModule } from "@adatechnology/logger";
16
16
  imports: [
17
17
  // Opção 1: Configuração estática (forRoot)
18
18
  LoggerModule.forRoot({
19
- level: 'debug',
20
- context: 'MyService',
21
- isProduction: process.env.NODE_ENV === 'production',
19
+ level: "debug",
20
+ context: "MyService",
21
+ isProduction: process.env.NODE_ENV === "production",
22
22
  colorize: true,
23
23
  }),
24
24
 
25
25
  // Opção 2: Configuração dinâmica (forRootAsync)
26
26
  LoggerModule.forRootAsync({
27
27
  useFactory: (configService: ConfigService) => ({
28
- level: configService.get('LOG_LEVEL'),
29
- isProduction: configService.get('NODE_ENV') === 'production',
28
+ level: configService.get("LOG_LEVEL"),
29
+ isProduction: configService.get("NODE_ENV") === "production",
30
30
  }),
31
31
  inject: [ConfigService],
32
32
  }),
@@ -92,9 +92,11 @@ Se quiser, eu adiciono um exemplo de teste unitário para validar o comportament
92
92
  Este pacote implementa um formato de log padronizado para todo o monorepo, facilitando o rastreamento de chamadas entre múltiplas bibliotecas e serviços.
93
93
 
94
94
  ### Formato Final
95
+
95
96
  `[App-name@version][lib-name:version][requestId][timestamp][source][libMethod][LEVEL] - message - {payload}`
96
97
 
97
98
  ### Propriedades do Payload
99
+
98
100
  Ao realizar um log, você pode passar as seguintes propriedades para enriquecer o contexto:
99
101
 
100
102
  - `message`: A mensagem principal do log.
@@ -105,7 +107,46 @@ Ao realizar um log, você pode passar as seguintes propriedades para enriquecer
105
107
  - `libMethod`: O método interno da biblioteca sendo executado. Ex: `get`.
106
108
  - `meta`: Objeto com metadados adicionais (será exibido em uma única linha compacta).
107
109
 
110
+ > ✅ **Padrão recomendado:** enviar payload estruturado em `meta`.
111
+ >
112
+ > ⚠️ **Compatibilidade legada:** payload em `params` ainda é aceito e promovido para `meta` internamente para não quebrar serviços antigos.
113
+
114
+ ### `meta` vs `params` (recomendação)
115
+
116
+ Use `meta` para todo conteúdo estruturado de log (request/response/error/details).
117
+
118
+ Exemplo recomendado:
119
+
120
+ ```ts
121
+ this.logger.error({
122
+ message: "Exception caught in filter",
123
+ context: "HttpExceptionFilter.logResponse",
124
+ requestId,
125
+ meta: {
126
+ request: { path, method, headers, params, query, body },
127
+ response: { status, headers, messages },
128
+ error: { type, message, status, body, details },
129
+ },
130
+ });
131
+ ```
132
+
133
+ Exemplo legado (ainda funciona, mas evite em código novo):
134
+
135
+ ```ts
136
+ this.logger.error({
137
+ message: "Exception caught in filter",
138
+ context: "HttpExceptionFilter.logResponse",
139
+ requestId,
140
+ params: {
141
+ request: { path, method, headers, params, query, body },
142
+ response: { status, headers, messages },
143
+ error: { type, message, status, body, details },
144
+ },
145
+ });
146
+ ```
147
+
108
148
  ### Exemplo de Log de Biblioteca
149
+
109
150
  Para uma biblioteca que segue o padrão:
110
151
 
111
152
  ```ts
@@ -128,13 +169,13 @@ Resultado visual:
128
169
  O pacote oferece um middleware `RequestContextMiddleware` que injeta um `requestId` (a partir do header `x-request-id` ou gerando um UUID) e executa a request dentro de um contexto assíncrono (AsyncLocalStorage). Para usá-lo no NestJS:
129
170
 
130
171
  ```ts
131
- import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
132
- import { RequestContextMiddleware, LoggerModule } from '@adatechnology/logger';
172
+ import { MiddlewareConsumer, Module, NestModule } from "@nestjs/common";
173
+ import { RequestContextMiddleware, LoggerModule } from "@adatechnology/logger";
133
174
 
134
175
  @Module({ imports: [LoggerModule.forRoot()] })
135
176
  export class AppModule implements NestModule {
136
177
  configure(consumer: MiddlewareConsumer) {
137
- consumer.apply(RequestContextMiddleware).forRoutes('*');
178
+ consumer.apply(RequestContextMiddleware).forRoutes("*");
138
179
  }
139
180
  }
140
181
  ```
@@ -146,6 +187,5 @@ Com o middleware ativo, o logger automaticamente incluirá `requestId` nos metad
146
187
  Se desejar um provider por request (cada request recebe uma instância com `setContext` isolado), passe `requestScoped: true` ao `forRoot`:
147
188
 
148
189
  ```ts
149
- LoggerModule.forRoot({ requestScoped: true })
190
+ LoggerModule.forRoot({ requestScoped: true });
150
191
  ```
151
-
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adatechnology/logger",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },