Sails.js HOWTO: выполнить ведение журнала для HTTP-запросов
При плохой регистрации по умолчанию Sails.js, не отображающей журналы запросов HTTP (даже в подробных). Каков наилучший способ реализации HTTP-запроса для консолидации, чтобы я мог видеть, возникают ли у меня искаженные запросы? Автозагрузку по умолчанию для Expressjs будет достаточно.
Я предпочел бы вариант конфигурации Sails.js, а затем изменить подход к исходному коду.
Имел ли кто-нибудь опыт с этим. Мои поисковые запросы Google кажутся странно отсутствующими.
Запуск парусов v0.9.8 на Mac OSX.
Ответы
Ответ 1
Нет опции конфигурации Sails для регистрации каждого запроса, но вы можете добавить быстрый маршрут ведения журнала вверху config/routes.js
, который должен сделать трюк:
// config/routes.js
'/*': function(req, res, next) {sails.log.verbose(req.method, req.url); next();}
Ответ 2
Возможно, слишком поздно, но для будущих ссылок об этом я использую Sails 0.11, и вы можете настроить это в промежуточном программном обеспечении в файле config/http.js
Добавьте эту функцию (на самом деле это как пример)
// Logs each request to the console
requestLogger: function (req, res, next) {
console.log("Requested :: ", req.method, req.url);
return next();
},
И настройте его на order
var:
order: [
'startRequestTimer',
'cookieParser',
'session',
'requestLogger', // Just here
'bodyParser',
'handleBodyParserError',
'compress',
'methodOverride',
'poweredBy',
'$custom',
'router',
'www',
'favicon',
'404',
'500'
]
Ответ 3
Я разработал модуль sails-hook-requestlogger для записи всех журналов запросов (журналов доступа) в файл.
Все, что вам нужно сделать, это npm install sails-hook-requestlogger-file
, и вам хорошо идти!
Использование
Просто поднимите приложение как обычно, и все ваши запросы на сервер будут записаны с полезной информацией, такой как время отклика, прямо на консоль. По умолчанию он активируется в вашей среде dev, но деактивируется в процессе производства.
Конфигурация
По умолчанию конфигурация работает в файле sails.config.requestloggerfile
Вы можете создать config/requestlogger.js
и переопределить эти значения по умолчанию:
Parameter Type Details
format ((string)) Defines which logging format to use. Deaults to dev.
logLocation ((string)) Defines where to log: console or file. Defaults to console.
fileLocation ((string)) Location of file relative to project root (if file is specified in logLocation. This has no effect if console is specified in logLocation.
inDevelopment ((boolean)) Whether or not to log requests in development environment. Defaults to true.
inProduction ((boolean)) Whether or not to log requests in production environment Defaults to false.
Пример config/requestlogger.js
file:
module.exports.requestloggerfile = {
//see: https://github.com/expressjs/morgan#predefined-formats for more formats
format: ':remote-addr - [:date[clf]] ":method :url" :status :response-time ms ":user-agent"',
logLocation: 'file',
fileLocation: '/var/log/myapp/access.log',
inDevelopment: true,
inProduction: true
};
Надеюсь, что это поможет кому-то:)
Ответ 4
Я нашел, что это соответствует моим потребностям - он использует модуль Morgan для Express и подбирает все для вас: https://www.npmjs.com/package/sails-hook-requestlogger