2015-02-20 3 views
1

Я внедрил Winston для регистрации моего приложения nodejs. В настоящее время я записываю журнал в файлы журнала с использованием транспорта «DailyRotateFile» Winston и вывод данных журнала на консоль.Nodejs Winston Emit to socket

Я хочу добавить дополнительный транспорт, который отправляет сообщение журнала в сокет, чтобы я мог выводить его на веб-интерфейс, который я создал с помощью Express через socket.io.

Это текущий путь я настроил Winston:

var logger = new winston.Logger({ 
    transports: [ 
     new winston.transports.DailyRotateFile({ 
      level: 'info', 
      filename: './Logs/server', 
      datePattern: '.yyyy-MM-dd.log', 
      handleExceptions: true, 
      json: true, 
      maxsize: 5242880, // 5MB 
      maxFiles: 5, 
      colorize: false 
     }), 
     new winston.transports.Console({ 
      level: 'debug', 
      handleExceptions: true, 
      json: false, 
      colorize: true 
     }) 
    ], 
    exitOnError: false 
}) 

Это кодируют настоящее время я использую испускать сообщение журнала:

var logStream = logger.stream({ 
    start: -1 
}) 

logStream.on('log', function(log){ 
    console.log('LOG STREAM') 
    //console.log(log) 
    io.emit('logger', log); 
}) 

Это, однако, постоянно выводит «LOG STREAM «к консоли nodejs при запуске сервера и не испускает ничего, когда я использую команду logger.info.

EDIT Так это выглядит, как причине он продолжает выводить «LOG STREAM» происходит потому, что он посылает все сообщения, которые были сохранены в файле журнала, даже если я ставлю «старт -1»

Я был бы очень признателен за любые предложения о том, как правильно это достичь. ТИА!

ответ

0

Это, как мне удалось добиться отправки логов Winston в браузер

я добавил следующий транспорт:

new winston.transports.Webhook({ 
      host: '192.168.51.242', 
      port: 8102, 
     }), 

Затем я создал TCP-порт для приема сообщений журнала:

http.createServer(function(req, res){ 
    var logMsg = ''; 
    req.on('data', function(data){ 
     logMsg += data.toString() 
    }) 
    req.on('end', function(data){ 
     io.emit('logger', logMsg) 
    }) 
}).listen(8102) 

каждый раз, когда я получаю данные в порт, я испускаю его с помощью Socket.IO на свой интерфейс Angualr

+0

Я получил следующую ошибку, и я не могу найти никаких документов о winston webhook > TypeError: winston.transports.Webhook не является функцией –

Смежные вопросы