Oi,
Usei sua função de formatador para fornecer um formato personalizado para minhas mensagens de log. Funciona perfeitamente para o transport.Console, mas o transport.File parece ignorar o formatador personalizado.
aqui está meu formatador de arquivo personalizado:
function customFileFormatter (options) {
// Return string will be passed to logger.
return options.timestamp() +' ['+ options.level.toUpperCase() +'] '+ (undefined !== options.message ? options.message : '') +
(options.meta && Object.keys(options.meta).length ? '\n\t'+ JSON.stringify(options.meta) : '' );
}
é essencial o logger dado em seu exemplo. Eu aplico assim:
winston.add(winston.transports.File, {
name: 'info-file',
filename: logPath + '/info.log',
level: 'info',
maxsize: 15000000,
formatter: customFileFormatter
});
mas a saída no arquivo de registro permanece a mesma:
{"level":"info","message":"INITIALISEING","timestamp":"2015-04-02T06:29:57.982Z"}
deveria ser:
{"level":"[INFO]","message":"INITIALISEING","timestamp":"2015-04-02T06:29:57.982Z"}
Não sei o que há de errado porque o mesmo funciona com o transporte.Console.
por favor ajude
saudações
Tonacate
OK, não importa.
esqueci de definir
json: false
mas seria legal se você pudesse alterar apenas alguns campos no registro json :)
Demorei um pouco para descobrir onde definir "json: false". Defina-o no (s) transporte (s) de arquivo. Aqui está meu exemplo:
const logFormatter = function(options) {
// Return string will be passed to logger.
return options.timestamp() +` `+ options.level.toUpperCase() +
` `+ (options.message ? options.message : ``) +
(options.meta && Object.keys(options.meta).length ?
`\n\t`+ JSON.stringify(options.meta) : `` );
};
const timestamp = function() {
const d = new Date();
return d.getHours() + `:` + d.getMinutes() + `:` +
d.getSeconds() + `m` + d.getMilliseconds();
};
const logger = new (winston.Logger)({
transports: [
new (winston.transports.File)({
timestamp: timestamp,
formatter: logFormatter,
level: `silly`,
name: `fileAll`,
filename: `fileAll.log`,
json: false, // set json:false on the file transport(s)
})
]
});
formatador funciona bem para mim, mas timestamp sempre imprime uma string literal
function () {
const d = nova data ();
return d.getHours () + :
+ d.getMinutes () + :
+
d.getSeconds () + m
+ d.getMilliseconds ();
} | DEBUG | Mensagem para uma depuração
function () {
const d = nova data ();
return d.getHours () + :
+ d.getMinutes () + :
+
d.getSeconds () + m
+ d.getMilliseconds ();
} | EMERGÊNCIA | Mensagem para uma depuração
OK, não importa.
esqueci de definir
json: false
mas seria legal se você pudesse alterar apenas alguns campos no registro json :)
Você salvou meu tempo! Eu me pergunto onde isso está documentado ..
Comentários muito úteis
OK, não importa.
esqueci de definir
json: false
mas seria legal se você pudesse alterar apenas alguns campos no registro json :)