Winston: Permitir a configuração de formatos por transporte dentro do mesmo registrador

Criado em 8 jul. 2018  ·  5Comentários  ·  Fonte: winstonjs/winston

Qual é o recurso?

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.

Esse é um recurso que você está preparado para implementar, com nosso suporte?

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?

Comentários muito úteis

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`');

Todos 5 comentários

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.

Esta página foi útil?
0 / 5 - 0 avaliações