logging.ts 827 B

1234567891011121314151617181920212223242526
  1. import winston, { Logger } from 'winston'
  2. import stringify from 'fast-safe-stringify'
  3. const colors = {
  4. error: 'red',
  5. warn: 'yellow',
  6. info: 'green',
  7. }
  8. winston.addColors(colors)
  9. export function createLogger(label: string): Logger {
  10. return winston.createLogger({
  11. transports: [new winston.transports.Console()],
  12. defaultMeta: { label },
  13. format: winston.format.combine(
  14. winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss:ms' }),
  15. winston.format.metadata({ fillExcept: ['label', 'level', 'timestamp', 'message'] }),
  16. winston.format.colorize(),
  17. winston.format.printf(
  18. (info) =>
  19. `${info.timestamp} ${info.label} [${info.level}]: ${info.message}` +
  20. (Object.keys(info.metadata).length ? `\n${stringify(info.metadata, undefined, 4)}` : '')
  21. )
  22. ),
  23. })
  24. }