Logs for Development
micro trainning, logs, javascript, and node
|
Oct 26, 2017
Evaluación de librerías para logs
- Considerar los mecanismos o protocolos de transporte:
- File
- Console
- Syslog
- HTTP
- Stream
- Buscar siempre que el mecanismo de logging sea de forma asíncrona
- Para el tema en particular de desarrollo fullstack (dependiendo del stack) considerar en la manera de lo posible que la librería corra sobre el stack completo.
- Buscar que la librería pueda integrarse con otros servicios o mecanismos de logging para cuestiones cómo: Persistencia, Búsqueda o Rastreo, Centralización, Agregación.
- Loggly
- Elasticsearch - Logstash - Kibana
Niveles de logs
- De acuerdo a su nivel de importancia y/o prioridad los logs se pueden categorizar en (dependiendo de la librería o protocolo):
- error
- warn
- info
- verbose
- debug
- Caso particular para java (Logback):
- TRACE < DEBUG < INFO < WARN < ERROR < OFF
Reglas
- Evitar uso de métodos bloqueantes:
- console.log
- System.out.print*
- Los servicios corriendo en producción deben siempre correr con un nivel de logs muy bajo:
- error o warn (O el nivel correspondiente de acuerdo a la librería)
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
//
// - Write to all logs with level `info` and below to `combined.log`
// - Write all logs error (and below) to `error.log`.
//
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
//
// If we're not in production then log to the `console` with the format:
// `${info.level}: ${info.message} JSON.stringify({ ...rest }) `
//
if (process.env.NODE_ENV !== 'production') {
logger.add(new winston.transports.Console({
format: winston.format.simple()
}));
}
Enlaces recomendados