The winston library is great for transports and flexibility. I'd like to use it to allow configuring levels and redirecting to files, but would like to reproduce console.log behavior for formatting, and having trouble.
Here's what I have so far:
const log = winston.createLogger({
level: 'debug',
format: format.combine(
format.timestamp({format: 'YYYY-MM-DD HH:mm:ss.SSS'}),
format.splat(),
format.colorize(),
format.printf(({level, message, label, timestamp}) => `${timestamp} ${label || '-'} ${level}: ${message}`),
),
transports: [
new winston.transports.Stream({
stream: process.stderr,
level: 'debug',
})
],
});
log.info("Hello, %s", "Bob"); // Works: outputs "Hello, Bob"
But this don't work:
log.info("Hello", "Bob");
log.info("Hello", 123, {someObj: 1});
I'd like all extraneous objects after those taken up by splat()
to get added on, space-separated, and converted to string preferably using util.inspect()
.