node.js - 温斯顿计时器不打印时间
问题描述
我正在运行 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
我没有在输出中看到经过的时间。我不确定在浏览文档时我遗漏了什么。请帮忙。
解决方案
如果你想使用时间戳选项,你应该在创建 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 选项手风琴
推荐阅读
- javascript - ThreeJS 渲染器更改父级大小
- oracle-apex - oracle apex 5.1 错误 500 内部服务器
- amazon-web-services - AWS IAM - 只允许用户为服务创建角色
- c - ncurses 仅在 bstate 非零时报告鼠标移动
- java - 在 Python/Java 中创建文件时每秒获得写入速度
- python - `SettingWithCopyWarning` 理解
- matlab - 在八度音程中运行matlab项目时,mex函数未定义错误
- c# - 统一3D。对撞机不对模型做出反应
- c# - 登录时的签到情况
- javascript - Javascript | addOnEventListener 不工作?