Javascript 如何使用winston logger记录新行中的每条消息?
我们使用winston logger将事件记录到nodejsJavascript 如何使用winston logger记录新行中的每条消息?,javascript,node.js,logging,winston,Javascript,Node.js,Logging,Winston,我们使用winston logger将事件记录到nodejsfs,我想使用winston将每个事件写入新行,是否可以使用winston库或任何其他与nodejs一起工作的方法来完成该任务 ctrl.js var winston = require('winston'); var consumer = new ConsumerGroup(options, topics); console.log("Consumer topics:", getConsumerTopics(consu
fs
,我想使用winston将每个事件写入新行,是否可以使用winston库或任何其他与nodejs一起工作的方法来完成该任务
ctrl.js
var winston = require('winston');
var consumer = new ConsumerGroup(options, topics);
console.log("Consumer topics:", getConsumerTopics(consumer).toString());
logger = new (winston.Logger)({
level: null,
transports: [
// new (winston.transports.Console)(),
new (winston.transports.File)({
filename: './logs/st/server.log',
maxsize: 1024 * 1024 * 20,//15728640 is 15 MB
timestamp: false,
json: false,
formatter: function (options) {
return options.message;
}
})
]
});
function startConsumer(consumer) {
consumer.on('message', function (message) {
logger.log('info', message.value);
//callback(message.value);
io.io().emit('StConsumer', message.value);
});
consumer.on('error', function (err) {
console.log('error', err);
});
};
startConsumer(consumer);
我使用类似的方法,使用
split
模块:
const split = require('split');
const winston = require('winston');
winston.emitErrs = false;
const logger = new winston.Logger({
transports: [
new winston.transports.File({
level: 'debug',
filename: 'server.log',
handleExceptions: true,
json: false,
maxsize: 5242880,
maxFiles: 5,
colorize: false,
timestamp: true,
}),
new winston.transports.Console({
level: 'debug',
handleExceptions: true,
json: false,
colorize: true,
timestamp: true,
}),
],
exitOnError: false,
});
logger.stream = split().on('data', message => logger.info(message));
module.exports = logger;
它非常适合我的需要,因为你的里程可能会有所不同
拆分
模块:
const split = require('split');
const winston = require('winston');
winston.emitErrs = false;
const logger = new winston.Logger({
transports: [
new winston.transports.File({
level: 'debug',
filename: 'server.log',
handleExceptions: true,
json: false,
maxsize: 5242880,
maxFiles: 5,
colorize: false,
timestamp: true,
}),
new winston.transports.Console({
level: 'debug',
handleExceptions: true,
json: false,
colorize: true,
timestamp: true,
}),
],
exitOnError: false,
});
logger.stream = split().on('data', message => logger.info(message));
module.exports = logger;
logger.stream=split()。
对不起,我不熟悉ES6yet@hussain否。此:logger.stream=split().on('data',message=>logger.info(message))
与此等效:logger.stream=split().on('data',function(message){logger.info(message);})代码>但是我发现它并没有用这个来写fs
approach@hussain在我的示例中,它正在向文件系统写入文件server.log
。你真的试过了吗?是的,我试过了。它没有写入server.log
,这就是为什么我问另一个问题,一旦我记录了基于事件的数据拆分,我是否可以在fs
中做些什么