winstonjs / winston

A logger for just about everything.
http://github.com/winstonjs/winston
MIT License
22.71k stars 1.8k forks source link

[Bug]: Cli formatter prepends "undefined" to log messages when using certain Syslog levels #2477

Open colireg opened 3 months ago

colireg commented 3 months ago

šŸ”Ž Search Terms

cli, syslog, undefined

The problem

The log messages get prepended with an undefined when using certain Syslog levels (emerg, alert, crit, warning and notice) with the CLI transport formatter. Other log levels (error, info and debug) work just fine.

What version of Winston presents the issue?

^3.13.0

What version of Node are you using?

v21.7.3

If this worked in a previous version of Winston, which was it?

No response

Minimum Working Example

import { config, createLogger, format, transports } from "winston";

const logger = createLogger({
    levels: config.syslog.levels,
    transports: [
        new transports.Console({
            format: format.cli()
        })
    ]
})

logger.emerg("Hello World!");
logger.alert("Hello World!");
logger.crit("Hello World!");
logger.warning("Hello World!");
logger.notice("Hello World!");

Additional information

The output is

emerg:undefinedHello World!
alert:undefinedHello World!
crit:undefinedHello World!
warning:undefinedHello World!
notice:undefinedHello World!
JoshuaWLindsay commented 3 months ago

Looks like invoking the cli method without arguments worked in winston < 3.0.0. Take a look at https://github.com/winstonjs/logform?tab=readme-ov-file#cli and see if that helps.