javascript - Winston 3.0 为控制台上的整个输出着色

标签 javascript node.js ecmascript-6 colors winston

我正在开发一个 Node.js 应用程序,使用 babel-cli作为 ES6 转译器,我正在使用 Winston 3.0作为我的日志记录服务。

问题:

我希望 winston 记录器的消息的整个输出都以彩色显示,不仅是标签和消息,还有时间戳。我知道,在 Winston 2.x 中,这在某些方面是可行的(虽然不知道如何实现)。

我已经尝试过不同的 NPM 包,例如 winston colorwinston-console-formatter , 但它们似乎不起作用。

我定义了我的记录器如下:

    import winston from 'winston'
    
    let alignColorsAndTime = winston.format.combine(
        winston.format.colorize({
            all:true
        }),
        winston.format.label({
            label:'[LOGGER]'
        }),
        winston.format.timestamp({
            format:"YY-MM-DD HH:MM:SS"
        }),
        winston.format.printf(
            info => ` ${info.label}  ${info.timestamp}  ${info.level} : ${info.message}`
        )
    );
    
    export const logger = winston.createLogger({
        level: "debug",
        transports: [
            new (winston.transports.Console)({
                format: alignColorsAndTime
            })
        ],
    });

输出仍然是这样的: Click for Image

虽然我宁愿让它看起来像这样: Click for Image

最佳答案

试试下面的代码。它将结合两种格式。它对我有用。


let alignColorsAndTime = winston.format.combine(
    winston.format.colorize({
        all:true
    }),
    winston.format.label({
        label:'[LOGGER]'
    }),
    winston.format.timestamp({
        format:"YY-MM-DD HH:mm:ss"
    }),
    winston.format.printf(
        info => ` ${info.label}  ${info.timestamp}  ${info.level} : ${info.message}`
    )
);
    
export const logger = winston.createLogger({
    level: "debug",
    transports: [
        new (winston.transports.Console)({
            format: winston.format.combine(winston.format.colorize(), alignColorsAndTime)
        })
    ],
});

注意填充必须处理颜色。例如:


const padding= info.level.length <= 7?7:17;  //padding differently if it has colour.
${info.level.padEnd(padding,' ')}

测试:

"winston": "^3.1.0"

关于javascript - Winston 3.0 为控制台上的整个输出着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51012150/

相关文章:

javascript - 如何仅将 javascript 应用于 1 个表单中的 2 个表单提交按钮中的 1 个?

javascript - 如何确定模块要导入或需要什么?

javascript - JSON 的数组键值

javascript - JavaScript 在执行 block 时会创建新的执行上下文吗?

javascript - 使用 React.cloneElement 时出现未知 Prop 警告

javascript - 如果没有 'new',则无法调用类构造函数 PolymerElement

javascript - 将大数据从 Android Activity 传输到 WebView Javascript

node.js - 我想开发多对多视频 session 站点

linux - Child_process 与模拟?

node.js - 亚马逊 Alexa : Control TCP device from SmartHomeSkill lambda