Регистрация Morgan не работает в приложении Keystone

Я запускаю экспресс-приложение на основе keystone.js. Я пытаюсь интегрировать ведение журнала Morgan, но оно не работает, когда какие-либо HTTP-запросы попадают на сайт. Я просто вижу нормальный вывод в своей консоли. Что я могу делать неправильно?

Вот мой routes/index.js файл

var keystone = require('keystone'),
    middleware = require('./middleware'),
    importRoutes = keystone.importer(__dirname);

var morgan = require('morgan');


// Common Middleware
keystone.pre('routes', middleware.initLocals);
keystone.pre('render', middleware.flashMessages);

// Import Route Controllers
var routes = {
    views: importRoutes('./views')
};

// Setup Route Bindings
exports = module.exports = function(app) {

    //Logging
    app.use(morgan('combined'));

    // Views
    app.get('/',middleware.ensureLatestBrowser, routes.views.index);
    app.get('/blog/:category?',middleware.ensureLatestBrowser, routes.views.blog);
    app.get('/blog/post/:post',middleware.ensureLatestBrowser, routes.views.post);
    app.all('/contact', middleware.ensureLatestBrowser,routes.views.contact);
    app.all('/software',middleware.ensureLatestBrowser, routes.views.software);


};

person RandomDeduction    schedule 12.05.2015    source источник


Ответы (1)


Это связано с тем, что Keystone уже загружает экземпляр morgan (который загружается раньше вашего). Формат по умолчанию, используемый Keystone, — :method :url :status :response-time ms.

Keystone позволяет настроить формат с помощью параметра logger.

keystone.init({
   ...
   'logger': 'combined'
   ...
});

В приведенном выше примере выходной формат для morgan будет установлен на combined.


ИЗМЕНИТЬ

Вышесказанное верно для Keystone 0.3.x, когда Keystone перешла на Express 4.x и morgan в качестве регистратора Express. Версии Keystone до 0.3.x используют Express 3.x с express.logger.

person JME    schedule 12.05.2015
comment
Согласно документам keystone.js, он НЕ использует morgan, а использует express.logger для ведения журнала, если я установил logger:default в файле init. Это хорошо, но мне нужен способ записать этот вывод в файл, а не в консоль. - person RandomDeduction; 13.05.2015
comment
На самом деле, он использует morgan. Нам нужно обновить документы. Я отправляю PR, обновляю документы сегодня. - person JME; 13.05.2015
comment
Я только что отправил запрос на обновление документации keystonejs.com (PR #1392). - person JME; 13.05.2015
comment
Поэтому, когда я устанавливаю 'logger' : 'combined', он печатает слово, объединенное в терминале, каждый раз, когда я перехожу к любому URL-адресу на сайте, а не в том формате, в котором он должен... есть идеи? - person RandomDeduction; 13.05.2015
comment
Просто из любопытства, какую версию Keystone вы используете? - person JME; 13.05.2015
comment
версия: 0.2.42 - не могу понять как обновить до последней. Обновление npm не обновляет keystone до последней версии. У меня уже есть 'auto update': true,. - person RandomDeduction; 13.05.2015
comment
Давайте продолжим это обсуждение в чате. - person RandomDeduction; 13.05.2015