node.js - 在 nodejs winston logger 中为时间戳使用不同的属性名称
问题描述
我正在使用带有时间戳格式化程序的 winstonjs 记录器。
我看到有一个提供别名的选项,我知道这是更改时间戳属性名称的方法,但它只会添加另一个具有别名的时间戳属性......例如:
var myFormat = winston.format.combine(winston.format.timestamp({format:'YYYY-MM-DD HH:mm:ss.SSS', alias:'Date'}),
winston.format.json());
this.winstonLogger = winston.createLogger();
this.winstonLogger.configure({
level: 'info',
format: myFormat,
transports: [
new winston.transports.Console(),
]
});
将产生如下日志:
{"level":"info","message":"app is loaded","timestamp":"2019-06-03 17:01:10.054","Date":"2019-06-03 17:01:10.054"}
所以有 2 个时间戳属性,一个名为“timestamp”,一个名为“Date”,正如我所要求的那样。
我用错了吗?还有另一种方法可以做到这一点吗?
解决方案
奇怪的是,添加别名时会将其添加为单独的时间戳条目。我认为作为一种解决方法,你可以试试这个。
const winston = require('winston');
const {createLogger, format, transports, info} = require('winston');
const removeTimestamp = format((info, opts) => {
if (info.timestamp) {
delete info.timestamp;
return info;
}
});
this.winstonLogger = createLogger({
// To see more detailed errors, change this to 'debug'
level: 'info',
format: format.combine(
format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss.SSS',
alias: 'Date',
}),
removeTimestamp(),
format.json(),
),
transports: [
new transports.Console()
],
});
推荐阅读
- ruby-on-rails - 在 Rails TestCase 中检查正则表达式
- c# - 如何使用 select 和 CopyToDataTable 函数合并数据表中的两列并使其成为单列
- javascript - 当我启动和关闭服务器时,所有查询和突变都不起作用
- node.js - 如何将 req.body 包含对象数组映射到节点 js 中的模型以进行 insertmany
- ios - 用户默认不提供价值
- react-native - 反应导航 headerBackImage 不起作用
- oracle - 找出最小范围大小
- python - 求一个数的 2 的幂
- c# - 强制依赖属性刷新
- r - 具有二元预测变量的随机森林回归