node.js - not - winston-daily-rotate-file
Winston no imprime en la consola (3)
Me di cuenta de la respuesta (la documentación es incorrecta). Si usa el constructor y agrega transportes manualmente, puede establecer opciones, tanto para Winston como para transportes individuales. Ciertas opciones deben agregarse a Winston directamente, mientras que otras deben agregarse al transporte.
P.ej:
var winston = require(''winston'');
var logger = new (winston.Logger)({
levels: {
trace: 0,
input: 1,
verbose: 2,
prompt: 3,
debug: 4,
info: 5,
data: 6,
help: 7,
warn: 8,
error: 9
},
colors: {
trace: ''magenta'',
input: ''grey'',
verbose: ''cyan'',
prompt: ''grey'',
debug: ''blue'',
info: ''green'',
data: ''grey'',
help: ''cyan'',
warn: ''yellow'',
error: ''red''
}
});
logger.add(winston.transports.Console, {
level: ''trace'',
prettyPrint: true,
colorize: true,
silent: false,
timestamp: false
});
logger.add(winston.transports.File, {
prettyPrint: false,
level: ''info'',
silent: false,
colorize: true,
timestamp: true,
filename: ''./nKindler.log'',
maxsize: 40000,
maxFiles: 10,
json: false
});
Estoy tratando de hacer que Winston imprima bastante en la consola, así que pegué esto en un archivo y lo ejecuté con el nodo:
var winston = require(''winston'');
winston.cli();
winston.data({
a: "test",
of: "many",
properties: {
like: "this"
}
});
winston.data(''data'', {
a: "test",
of: "many",
properties: {
like: "this"
}
});
La terminal devuelve los siguientes mensajes (no exactamente bonitos):
data: a=test, of=many, like=this
data: data a=test, of=many, like=this
Estoy siguiendo las instrucciones en el archivo Léame de Winston ("Uso de winston en una herramienta CLI"). ¿Estoy malinterpretando algo? ¿Falta un ajuste en alguna parte?
Si está utilizando [email protected], la respuesta aceptada no funcionará. Intenta lo siguiente:
const winston = require("winston");
let date = new Date().toISOString();
const logFormat = winston.format.printf(function(info) {
return `${date}-${info.level}: ${JSON.stringify(info.message, null, 4)}/n`;
});
const logger = new winston.createLogger({
transports: [
new winston.transports.Console({
level: level,
format: winston.format.combine(winston.format.colorize(), logFormat)
})
]
});
Los registros tendrán el siguiente formato:
Es de color por cierto
2018-03-01T19:49:54.042Z-info: "----- Customer Details ------"
2018-03-01T19:49:54.042Z-info: [
{
"A": 1,
"B": 2
}
]
Tomé la respuesta de @ partycoder y la recorté para usar solo los niveles de registro predeterminados que vienen con Winston. Tampoco invierte el orden de los errores. 0 = prioridad más alta.
winston.addColors({
silly: ''magenta'',
debug: ''blue'',
verbose: ''cyan'',
info: ''green'',
warn: ''yellow'',
error: ''red''
});
winston.remove(winston.transports.Console);
winston.add(winston.transports.Console, {
level: process.env.LOG_LEVEL,
prettyPrint: true,
colorize: true,
silent: false,
timestamp: false
});