Пропустить, если это не посещение посетителем
Так что я использую morgan
регистрировать запросы в файл с помощью следующего кода.
//log request
var morgan = require('morgan');
// create a write stream (in append mode)
var accessLogStream = fs.createWriteStream('./logs/request.log', { flags: 'a' })
// setup the logger
// app.use(morgan('Request at: :date[clf] method: :method URL: :url type: HTTP/:http-version status: :status length: :res[content-length] referrer: :referrer device: :user-agent', { stream: accessLogStream }))
app.use(morgan(function (tokens, req, res) {
return [
"Request at: "+tokens.date(req, res),
" by: "+tokens.method(req, res),
" path: "+tokens.url(req, res),
" status: "+tokens.status(req, res),
" length: "+tokens.res(req, res, 'content-length'),
" time: "+tokens['response-time'](req, res)+'ms',
"--------------------------------------------------"
].join('\n')
}, { stream: accessLogStream }))
С кодом он будет регистрировать что-то вроде этого:
Request at: Wed, 31 Jan 2018 14:28:02 GMT
by: GET
path: /src/listjs/
status: 200
length: undefined
time: 8.583ms
--------------------------------------------------
Но я обнаружил, что он также будет регистрировать файлы js/css, которые используются в вашем HTML-файле, но, как показано ниже, с помощью следующего кода
app.use(morgan('referrer: :referrer device: :user-agent', { stream: accessLogStream }))
Я могу получить журнал:
URL: / referrer: -
URL: /src/css/theme/font.css referrer: http://192.168.100.18/
Что, я думаю, означало, что если посетитель посетит referrer
будет сказано -
в то время как если это HTML-файл, запрашивающий referrer
будет сказано с http адресом.
Таким образом, моя цель состоит в том, чтобы регистрировать только запрос, сделанный посетителем, который я пробовал следующий код, но не могу работать
app.use(morgan('URL: :url referrer: :referrer', {
stream: accessLogStream,
skip: function (req, res) { return res.referrer != "-" }
}))
Моя идея - использовать функцию пропуска, чтобы пропустить все запросы, которые не имеют referrer
как -
но я потерпел неудачу, кто-нибудь может мне помочь?