mirror of
https://github.com/goldbergyoni/nodebestpractices.git
synced 2025-10-29 00:19:14 +08:00
translated use mature logger
This commit is contained in:
@ -0,0 +1,53 @@
|
||||
# Use um agente de log maduro para aumentar a visibilidade de erros
|
||||
|
||||
### Explicação em um Parágrafo
|
||||
|
||||
Todos nós amamos console.log, mas obviamente, um logger respeitável e persistente como [Winston][winston], [bunyan][bunyan] (altamente popular) ou [pino][pino] (o novato que está focado no desempenho) é obrigatório para projetos sérios. Um conjunto de práticas e ferramentas ajudará a entender os erros muito mais rapidamente - (1) logar freqüentemente usando diferentes níveis (depuração, informação, erro), (2) ao registrar, fornecer informações contextuais como objetos JSON, ver exemplo abaixo, (3) observe e filtre os logs usando uma API de consulta de log (incorporada na maioria dos registradores) ou um software de visualização de logs, (4) Expor e selecionar a declaração de log para a equipe de operação usando ferramentas de inteligência operacional como o Splunk.
|
||||
|
||||
[winston]: https://www.npmjs.com/package/winston
|
||||
[bunyan]: https://www.npmjs.com/package/bunyan
|
||||
[pino]: https://www.npmjs.com/package/pino
|
||||
|
||||
### Exemplo de Código – Registrador Winston em ação
|
||||
|
||||
```javascript
|
||||
// seu objeto registrador centralizado
|
||||
var logger = new winston.Logger({
|
||||
level: 'info',
|
||||
transports: [
|
||||
new (winston.transports.Console)()
|
||||
]
|
||||
});
|
||||
|
||||
// código personalizado em algum lugar usando o registrador
|
||||
logger.log('info', 'Mensagem de Log de Teste com algum parâmetro %s', 'algum parâmetro', { anything: 'Este é um metadado' });
|
||||
|
||||
```
|
||||
|
||||
### Exemplo de código - Consultando a pasta de log (procurando por entradas)
|
||||
|
||||
```javascript
|
||||
var options = {
|
||||
from: new Date - 24 * 60 * 60 * 1000,
|
||||
until: new Date,
|
||||
limit: 10,
|
||||
start: 0,
|
||||
order: 'desc',
|
||||
fields: ['message']
|
||||
};
|
||||
|
||||
|
||||
// Encontrar itens registrados entre hoje e ontem.
|
||||
winston.query(options, function (err, results) {
|
||||
// executar callback com os resultados
|
||||
});
|
||||
```
|
||||
|
||||
### Citação de Blog: "Requisitos do Registrador"
|
||||
|
||||
Do blog Strong Loop
|
||||
|
||||
> Vamos identificar alguns requisitos (para um registrador):
|
||||
1. Carimbo de data / hora de cada linha de log. Este é bastante auto-explicativo - você deve ser capaz de dizer quando cada entrada de log ocorreu.
|
||||
2. Formato de registro deve ser facilmente entendido tanto por seres humanos, quanto para máquinas.
|
||||
3. Permite múltiplos fluxos de destino configuráveis. Por exemplo, você pode estar gravando logs de rastreio em um arquivo, mas quando um erro é encontrado, grava no mesmo arquivo, depois no arquivo de erro e envia um email ao mesmo tempo…
|
||||
Reference in New Issue
Block a user