Eu tenho um logger com um transporte de console e outro transporte que vai para um serviço de log baseado em nuvem. Para o console, quero prefixar mensagens com um carimbo de data / hora e colorizá-las. Para o serviço de registro em nuvem, não quero carimbos de data / hora porque o serviço fornece os seus próprios e também não quero cores.
PRs para este recurso já foram enviados: # 427 e # 422
Já é possível configurar formatos por transporte, mas não vi esse recurso explicado no README?
Esqueça, isso é realmente possível, mas a documentação omite completamente a menção ao recurso.
const logger = winston.createLogger({
transports: [
new winston.transports.File({
filename: 'error.log', level: 'error',
format: winston.format.simple(),
}),
new winston.transports.File({
filename: 'combined.log', level: 'debug',
format: winston.format.printf(info => `${new Date().toISOString(), ${info.message}`),
}),
],
});
logger.error('prefixed by the timestamp only in `combined.log`');
Definitivamente, adicione aos documentos, por favor
@dandv O código printf em seu comentário não funciona
Então esta linha ...
format: winston.format.printf(info => `${new Date().toISOString(), ${info.message}`),
... precisa de uma chave de fechamento assim
format: winston.format.printf(info => `${new Date().toISOString()}, ${info.message}`),
Obrigado pelo código e conhecimento para a formatação personalizada! Muito apreciado!
Esqueça, isso é realmente possível, mas a documentação omite completamente a menção ao recurso.
const logger = winston.createLogger({ transports: [ new winston.transports.File({ filename: 'error.log', level: 'error', format: winston.format.simple(), }), new winston.transports.File({ filename: 'combined.log', level: 'debug', format: winston.format.printf(info => `${new Date().toISOString(), ${info.message}`), }), ], }); logger.error('prefixed by the timestamp only in `combined.log`');
@dandv e se eu tiver outro formato fora de transportes e dentro do método create logger. Qual formato será aplicado?
Esqueça, isso é realmente possível, mas a documentação omite completamente a menção ao recurso.
const logger = winston.createLogger({ transports: [ new winston.transports.File({ filename: 'error.log', level: 'error', format: winston.format.simple(), }), new winston.transports.File({ filename: 'combined.log', level: 'debug', format: winston.format.printf(info => `${new Date().toISOString(), ${info.message}`), }), ], }); logger.error('prefixed by the timestamp only in `combined.log`');
@dandv e se eu tiver outro formato fora de transportes e dentro do método create logger. Qual formato será aplicado?
O que está dentro.
Comentários muito úteis
Esqueça, isso é realmente possível, mas a documentação omite completamente a menção ao recurso.