Cursos / Informática para Internet / Desenvolvimento Backend / Aula
Log é um registro de tudo que aconteceu na execução do programa, que serve para análise de erros e compreensão do funcionamento da aplicação.
A biblioteca winston auxiliará no uso de logs. Para usá-la, é preciso fazer a instalação executando, no terminal, o comando:
npm install winston
Após isso, é preciso configura-lá. Então, crie um arquivo, nomeando-o de 'logger.js' na pasta utils.
Com o arquivo já criado, insira o código abaixo:
const { createLogger, format, transports } = require('winston');
const { combine, timestamp, label, printf } = format;
const myFormat = printf(({ level, message, label, timestamp }) => {
return `${timestamp} [${label}] ${level}: ${message}`;
});
const logger = createLogger({
format: combine(
label({ label: 'right meow!' }),
timestamp(),
myFormat
),
transports: [new transports.Console()]
});
module.exports = logger
Agora, abra o arquivo 'index.js', importe logger e troque todos os console.log() por logger.info(). O arquivo ficará conforme o modelo abaixo:
app.listen(8080, () => {
logger.info(`Iniciando no ambiente ${process.env.NODE_ENV}`)
logger.info('Servidor pronto na porta 8080')
})
Com essa configuração acima, o log vai ser escrito apenas no console. Porém, queremos salvá-lo em um arquivo e para fazer isso é preciso configurar, em 'logger.js', um novo transporte, se vê abaixo:
new transports.File({
filename: "logs/app-log.log",
level: 'debug'
})]
Com isso, as informações serão salvas em um arquivo que será criado automaticamente. Mas, ainda assim, seria interessante criar um log no nível debug. Para isso, no entanto, é necessário antes criar um middleware.
Crie um arquivo chamado 'log.mid.js' na pasta middleware e implemente o código abaixo:
const logger = require("../utils/logger");
function logar(req, res, next){
logger.debug('Requisição %s na rota %s', req.method, req.path)
next()
}
module.exports = logar
Também é preciso registrar esse novo middleware no 'index.js'.
Acompanhando a aula, serão feitas algumas pequenas alterações, explicadas no vídeo, no arquivo de 'logger.js'. Ao final, o arquivo deverá ficar conforme o modelo abaixo:
const { createLogger, format, transports } = require('winston');
const { combine, timestamp, label, printf } = format;
const myFormat = printf(({ level, message, label, timestamp }) => {
return `${timestamp} [${level}] ${message}`;
});
const logger = createLogger({
format: combine(
format.splat(),
timestamp(),
myFormat
),
transports: [new transports.Console({
level: 'debug'
}), new transports.File({
filename: "logs/app-log.log",
level: 'debug'
})]
});
module.exports = logger
Versão 5.3 - Todos os Direitos reservados