我正在运行一个基于keystone.js Express的应用程序。我正在尝试集成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);


};

最佳答案

这是因为keystone已经加载了morgan的一个实例(该实例在您之前加载)。keystone使用的默认格式是:method :url :status :response-time ms
keystone允许您使用logger选项自定义格式。

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

上面的示例将把morgan的输出格式设置为combined
编辑
当keystone迁移到express0.3.x4.x作为express记录器时,keystonemorgan的上述情况是正确的。keystone的pre-0.3.x版本使用express3.xexpress.logger

关于javascript - Morgan记录无法在Keystone应用程序中工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30200566/

10-13 00:43