Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用winston logger记录新行中的每条消息?_Javascript_Node.js_Logging_Winston - Fatal编程技术网

Javascript 如何使用winston logger记录新行中的每条消息?

Javascript 如何使用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

我们使用winston logger将事件记录到nodejs
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;

所以在我的例子中,我可以在('data',message,function(message){message.value})上执行
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
中做些什么