Пропустить, если это не посещение посетителем

Так что я использую 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 как - но я потерпел неудачу, кто-нибудь может мне помочь?

0 ответов

Другие вопросы по тегам