NodeJS - как записать в файл все console.log?

1

На моем сервере CentOS 7.x я запускаю узел (v6.7.0 и v0.10.36).

forever start/home/www/html/server/mynode.js

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

/usr/bin/node/home/www/html/server/mynode.js

КОД mynode.js:

var http = require('http');
var net = require('net');
var url = require('url');
var io = require('socket.io').listen(3004);
io.set('log level', 1);

io.sockets.on('connection', function (socket) {
  socket.on('disconnect', function () {
    try{
      console.log(JSON.stringify(db));           
    } catch(dis) {
      console.log(dis);
    }

  });
});

Как я могу сказать NodeJS или Linux, чтобы вести журнал? Чтобы я мог слушать, что происходит на tail -f/var/log/mynode.log?

  • 1
    forever start /home/www/html/server/mynode.js > /var/log/mynode.log , например
  • 0
    Я пробовал это, но он не регистрирует реальный console.log, но он регистрирует только события навсегда.
Теги:
centos

2 ответа

6
Лучший ответ

Вы можете перезаписать console.log

var fs = require('fs');

var trueLog = console.log;
console.log = function(msg) {
    fs.appendFile("/tmp/log.log", msg, function(err) {
        if(err) {
            return trueLog(err);
        }
    });
    //trueLog(msg); //uncomment if you want logs
}

Просто поставьте этот фрагмент поверх вашего кода nodejs.

  • 0
    У меня большая нагрузка на скрипт NodeJs. Если я использую writeFile в тяжелых условиях. Мой сценарий будет работать медленно, и это сделает сервис медленным движением. Нет ли другого лучшего способа?
  • 1
    @YumYumYum хорошо, вы можете использовать буфер и записывать, как только он достигнет определенного предела, или даже использовать инициированные записи. Если вам нужна помощь с этим, просто оставьте личку;)
Показать ещё 2 комментария
1

Там есть возможность для записи журналов forever -o path/to/logfile start/home/www/html/server/mynode.js

Из документов -o OUTFILE Logs stdout from child script to OUTFILE

  • 0
    Та же проблема. -o регистрирует только события навсегда, но не события nodejs myscript.js. info: socket.io started warn: error raised: Error: listen EADDRINUSE

Ещё вопросы

Сообщество Overcoder
Наверх
Меню