Вход в экспресс-JS в выходной файл? - PullRequest
60 голосов
/ 30 марта 2011

Как лучше всего войти в мой экспресс-сервер js? Встроенный express.logger () просто отображает журналы на экране. Могу ли я также войти в файл в папке / log? Также текущий регистратор автоматически регистрирует запрос и ответы. Мне нужно записать некоторые данные приложения в файлы журнала. Можно ли это сделать с помощью express.logger?

С уважением, Лалитй

Ответы [ 7 ]

70 голосов
/ 26 января 2012

Для отправки журналов экспресс или подключения к файлу используйте Node's writeStream .Например, для отправки экспресс-журналов в . / MyLogFile.log :

откройте поток для вашего файла в режиме добавления с помощью:

var logFile = fs.createWriteStream('./myLogFile.log', {flags: 'a'}); //use {flags: 'w'} to open in write mode

, затем в вашемЭкспресс-использование конфигурации:

app.use(express.logger({stream: logFile}));

также должно работать для connect.logger.

47 голосов
/ 31 марта 2011

Посмотрите на связующее промежуточное ПО, которое Express расширяет.Express.logger () аналогичен connect.logger ():

http://expressjs.com/api.html#middleware

http://www.senchalabs.org/connect/logger.html

У регистратора есть опция потока, которая может бытьустановить, куда вы хотите выходной.По умолчанию он отправляет его на стандартный вывод.Также вы можете указать формат журнала, который вы хотите использовать.

20 голосов
/ 31 марта 2011

Вы должны попробовать Уинстон

var logger = new (winston.Logger)({
  transports: [
    new (winston.transports.Console)(),
    new (winston.transports.File)({ filename: 'somefile.log' })
  ]
});
8 голосов
/ 25 марта 2014

Использовать log4js:

var log4js = require('log4js');
log4js.configure({
    appenders: [{type: 'console'},
                {type: 'file', filename: 'express.log', category: 'dev'}]
});

var logger = log4js.getLogger('dev');
logger.setLevel('DEBUG');

app.use(log4js.connectLogger(logger, {level: log4js.levels.DEBUG}));
8 голосов
/ 27 сентября 2011

Уинстон довольно глупый, ведение нескольких транспортных журналов == tee (1), или просто добавьте файл и перенесите данные, как пирог

4 голосов
/ 26 апреля 2015

Для регистрации HTTP-запроса: https://github.com/expressjs/morgan#write-logs-to-a-file

var express = require('express')
var fs = require('fs')
var morgan = require('morgan')

var app = express()

// create a write stream (in append mode)
var accessLogStream = fs.createWriteStream(__dirname + '/access.log', {flags: 'a'})

// setup the logger
app.use(morgan('combined', {stream: accessLogStream}))

app.get('/', function (req, res) {
  res.send('hello, world!')
})
4 голосов
/ 17 октября 2011

вы должны попробовать кластер http://learnboost.github.com/cluster/ для узла. Используйте Express для создания приложения, в то время как кластер берет на себя все остальные задачи, включая ведение журнала.

  1. app.use (express.logger ()); // в ваших экспресс-приложениях, например: app.js
  2. cluster.use (cluster.logger ('logs')); // в вашем кластерном сервере, например: server.js
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...