@gyramais/log-transport 0.5.1 → 0.5.3
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.
- package/README.md +30 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +26 -1
- package/dist/logger.js.map +1 -1
- package/package.json +1 -1
- package/src/logger.ts +29 -1
package/README.md
CHANGED
|
@@ -77,6 +77,36 @@ Toda configuração entra por parâmetro. Três razões, em ordem de peso:
|
|
|
77
77
|
Quem lê env é o serviço, no entrypoint. Há um teste que compila o pacote com
|
|
78
78
|
`removeComments` e falha se `process.env` aparecer no código emitido.
|
|
79
79
|
|
|
80
|
+
## Armadilha do Nest: `warn` com objeto apaga o `context`
|
|
81
|
+
|
|
82
|
+
Não é deste pacote — é a assinatura do Nest, `error(message, stack?, context?)` contra
|
|
83
|
+
`warn(message, context?)`. O 2º argumento cai em slots diferentes antes de chegar ao
|
|
84
|
+
transporte, e o pacote preserva esse comportamento de propósito (o `formatMeta` é o
|
|
85
|
+
mesmo da fonte):
|
|
86
|
+
|
|
87
|
+
```json
|
|
88
|
+
// logger.warn('marcador', { scrId }) -> o objeto OCUPA context; o nome da classe some
|
|
89
|
+
{"context":{"scrId":"..."},"level":"warn","message":"marcador"}
|
|
90
|
+
|
|
91
|
+
// logger.error('marcador', { scrId }) -> vai para stack; context sobrevive
|
|
92
|
+
{"context":"SCRPlugin","level":"error","message":"marcador","stack":[{"scrId":"..."}]}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
A consequência é na **consulta**, não na entrega: painel ou alerta que filtra por
|
|
96
|
+
`context` deixa de achar marcadores emitidos com `warn` + objeto.
|
|
97
|
+
|
|
98
|
+
Antes de adotar num serviço, procure quem já faz isso:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
grep -rn "logger\.warn(" src --include="*.ts" | grep ","
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
O padrão que funciona igual no formato local e no JSON é **logfmt dentro da mensagem**:
|
|
105
|
+
|
|
106
|
+
```ts
|
|
107
|
+
logger.warn(`scr-hbi-no-data scrId=${scrId} yearMonth=${yearMonth}`);
|
|
108
|
+
```
|
|
109
|
+
|
|
80
110
|
## Detalhes que não são arbitrários
|
|
81
111
|
|
|
82
112
|
- **`service` é obrigatório no tipo.** O `gyra-nest-boilerplate` rotula hoje
|
package/dist/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAmCA,OAAO,aAAa,GAAG,QAAQ,cAAc,CAAC,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAKpD,OAAO,EAKL,aAAa,EAEd,MAAM,WAAW,CAAC;AAQnB,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,aAAa,CAAC;IAOtB,uBAAuB,CAAC,EAAE,MAAM,IAAI,CAAC;IAOrC,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAmCA,OAAO,aAAa,GAAG,QAAQ,cAAc,CAAC,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAKpD,OAAO,EAKL,aAAa,EAEd,MAAM,WAAW,CAAC;AAQnB,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,aAAa,CAAC;IAOtB,uBAAuB,CAAC,EAAE,MAAM,IAAI,CAAC;IAOrC,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AA0KD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,aAAa,KAAG,WA8FxD,CAAC"}
|
package/dist/logger.js
CHANGED
|
@@ -116,10 +116,35 @@ const isUsableHost = (host) => {
|
|
|
116
116
|
return false;
|
|
117
117
|
}
|
|
118
118
|
};
|
|
119
|
+
/*
|
|
120
|
+
O diagnóstico NUNCA imprime o valor recebido, só a classificação.
|
|
121
|
+
|
|
122
|
+
A primeira versão imprimia `host=${JSON.stringify(host)}`, e a seletividade disso
|
|
123
|
+
é invertida: o que faz um valor ser "host inválido" é justamente ele não ser uma
|
|
124
|
+
URL — e um par `tenant:token` não é URL. Ou seja, a guarda ficava calada nos
|
|
125
|
+
valores inofensivos e imprimia exatamente os que parecem credencial.
|
|
126
|
+
|
|
127
|
+
Não é hipotético: no `.env-sample` do gyra-core, `LOKI_URL` e `LOKI_BASIC_AUTH`
|
|
128
|
+
são linhas ADJACENTES, e a segunda carregava um token real até este mesmo card
|
|
129
|
+
tirá-lo. Trocar uma pela outra é o erro de digitação mais provável do arquivo.
|
|
130
|
+
|
|
131
|
+
E este `write` vai direto ao stdout de propósito (não pode realimentar o Loki num
|
|
132
|
+
laço de erro), então não passa por `maskSensitive`: quem protege aqui é não ter o
|
|
133
|
+
valor na mão.
|
|
134
|
+
*/
|
|
135
|
+
const classifyHost = (host) => {
|
|
136
|
+
if (typeof host !== 'string') {
|
|
137
|
+
return `<${typeof host}>`;
|
|
138
|
+
}
|
|
139
|
+
if (!host.trim()) {
|
|
140
|
+
return '<vazio>';
|
|
141
|
+
}
|
|
142
|
+
return '<sem esquema http(s)>';
|
|
143
|
+
};
|
|
119
144
|
const warnInvalidHost = (host) => {
|
|
120
145
|
process.stdout.write(`${JSON.stringify({
|
|
121
146
|
level: 'error',
|
|
122
|
-
message: `[LOKI-CONFIG-INVALID] host=${
|
|
147
|
+
message: `[LOKI-CONFIG-INVALID] host=${classifyHost(host)} ` +
|
|
123
148
|
'nao e uma URL http(s) utilizavel; seguindo so com Console. ' +
|
|
124
149
|
'Nenhum log sera enviado ao destino remoto.',
|
|
125
150
|
timestamp: new Date().toISOString(),
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/logger.ts
CHANGED
|
@@ -167,12 +167,40 @@ const isUsableHost = (host: unknown): host is string => {
|
|
|
167
167
|
}
|
|
168
168
|
};
|
|
169
169
|
|
|
170
|
+
/*
|
|
171
|
+
O diagnóstico NUNCA imprime o valor recebido, só a classificação.
|
|
172
|
+
|
|
173
|
+
A primeira versão imprimia `host=${JSON.stringify(host)}`, e a seletividade disso
|
|
174
|
+
é invertida: o que faz um valor ser "host inválido" é justamente ele não ser uma
|
|
175
|
+
URL — e um par `tenant:token` não é URL. Ou seja, a guarda ficava calada nos
|
|
176
|
+
valores inofensivos e imprimia exatamente os que parecem credencial.
|
|
177
|
+
|
|
178
|
+
Não é hipotético: no `.env-sample` do gyra-core, `LOKI_URL` e `LOKI_BASIC_AUTH`
|
|
179
|
+
são linhas ADJACENTES, e a segunda carregava um token real até este mesmo card
|
|
180
|
+
tirá-lo. Trocar uma pela outra é o erro de digitação mais provável do arquivo.
|
|
181
|
+
|
|
182
|
+
E este `write` vai direto ao stdout de propósito (não pode realimentar o Loki num
|
|
183
|
+
laço de erro), então não passa por `maskSensitive`: quem protege aqui é não ter o
|
|
184
|
+
valor na mão.
|
|
185
|
+
*/
|
|
186
|
+
const classifyHost = (host: unknown): string => {
|
|
187
|
+
if (typeof host !== 'string') {
|
|
188
|
+
return `<${typeof host}>`;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (!host.trim()) {
|
|
192
|
+
return '<vazio>';
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
return '<sem esquema http(s)>';
|
|
196
|
+
};
|
|
197
|
+
|
|
170
198
|
const warnInvalidHost = (host: unknown): void => {
|
|
171
199
|
process.stdout.write(
|
|
172
200
|
`${JSON.stringify({
|
|
173
201
|
level: 'error',
|
|
174
202
|
message:
|
|
175
|
-
`[LOKI-CONFIG-INVALID] host=${
|
|
203
|
+
`[LOKI-CONFIG-INVALID] host=${classifyHost(host)} ` +
|
|
176
204
|
'nao e uma URL http(s) utilizavel; seguindo so com Console. ' +
|
|
177
205
|
'Nenhum log sera enviado ao destino remoto.',
|
|
178
206
|
timestamp: new Date().toISOString(),
|