【问题标题】:Hiding log-level in Winston logs在 Winston 日志中隐藏日志级别
【发布时间】:2017-09-20 09:48:11
【问题描述】:
我正在使用 Winston.js 在 Javascript 应用程序中记录一些信息。问题是日志级别应该隐藏在打印的日志中。
而不是这样:
info: some pretty and cool log message
我需要这样的东西:
some pretty and cool log message
我查看了Winston main page,但没有找到任何东西。
【问题讨论】:
标签:
javascript
logging
winston
【解决方案1】:
您需要使用自定义格式:
const { createLogger, format, transports } = require('winston');
const winston = createLogger({
level: 'info',
transports: [
new transports.Console({
level: 'info',
format: format.combine(
format.colorize(),
format.printf(
(info) => {
// return `${info.level}: ${info.message}`;
return `${info.message}`;
})
)
}),
]
});
winston.info('Hello world');
winston.log('info', 'Hello world 2');
//or you can use wrapper to easy replace console.log
const logger = {
log:(msg) => {
winston.info(msg);
}
}
logger.log('Hello world 3');
【解决方案2】:
爬取库的单元测试,找到了这个:Custom formatter。基本上,为日志级别声明一个自定义格式化程序,您基本上可以对将写入日志的文本做任何您想做的事情。
要仅写入不带任何日志级别信息的日志消息,请按以下方式重新定义日志的格式化程序。
var winston = require('winston');
var logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)({
level: 'info',
pattern: /info\:/,
formatter: function(params) {
return undefined !== params.message ? params.message : "";
}
})
]
});
上面的例子定义了一个控制台logger,它只打印message级别的日志info,没有任何附加信息。
希望对你有帮助。