【问题标题】:winston timer not printing time温斯顿计时器不打印时间
【发布时间】:2021-03-10 22:19:19
【问题描述】:

我正在运行 winston 计时器文档中给出的这个示例 -

const winston = require('winston');

const logger = winston.createLogger({
  level: 'silly',
  format: winston.format.simple(),
});

logger.add(new winston.transports.Console({
    format: winston.format.simple(),
}));

require('winston-timer')(logger, {"useColors":false});
logger.start_log('something', 'silly');
logger.stop_log('something', 'silly');

在输出中我应该看到时间,但我看到的是这个 -

nodejstutorials % node winstontimerbasic.js
silly: Starting timer "something"
silly: Finished timer "something" in 

我没有在输出中看到经过的时间。我不确定在浏览文档时我遗漏了什么。请帮忙。

【问题讨论】:

    标签: node.js logging winston


    【解决方案1】:

    如果您想使用时间戳选项,您应该在创建 winston 实例时说明。

    用这个改变你的 winston 导入:

    const winston, { format } = require('winston');
    

    从格式中解构所需的属性:

    const { combine, timestamp, printf } = format;
    

    在创建 winston 实例时创建自定义打印选项:

    const logger = winston.createLogger({
        level: "error",
        format: combine(
            format.errors({ stack: true }), // log the full stack
            timestamp(), // get the time stamp part of the full log message
            printf(({ level, message, timestamp, stack }) => {
                // formating the log outcome to show/store
                return `${level === "error" ? "❌" : "✅"} ${level}: ${message} ${
                    level === "error" ? "| ? " + timestamp.substring(0, 19) : ""
                }   ${"\n"} ${level === "error" ? stack : ""}`;
            }),
            format.metadata() // >>>> ADD THIS LINE TO STORE the ERR OBJECT IN META field
        ),
        transports: [
            new winston.transports.Console({ level: "info" }),
            new winston.transports.File({ filename: "logs.log", level: "info" }),
        ],
    });
    

    这将为您的 winston 记录器创建一个自定义 printf 选项。你可以导出它,你喜欢它:

    logger.error(error)
    logger.info("this is an info")
    

    当然,您可以根据自己的喜好自定义 printf 选项手风琴

    【讨论】:

    • 我不想要时间戳,我想测量经过的时间。根据他们的文档,上面的代码应该打印 start_log 和 stop_log 调用之间经过的时间,但我看到的是空白。
    • 我以为你在寻找时间戳。我以前没有使用过打印时间。造成误会请见谅
    猜你喜欢
    • 2013-07-31
    • 2012-12-08
    • 2021-02-23
    • 2012-08-27
    • 1970-01-01
    • 2017-12-23
    • 2013-10-23
    • 1970-01-01
    • 2016-08-29
    相关资源
    最近更新 更多