версия браузера - expressjs / morgan - PullRequest
0 голосов
/ 27 мая 2020

Мне нужно собрать журнал доступа пользователей в приложении, в основном имя и версию браузера, который он использует. Однако Морган приносит много деталей, которые мне не нужны, вы можете мне помочь?

В настоящее время:

Firefox

  • :: 1 - ОПЦИИ - / signin - 204 - 0 - 0,126 мс http://localhost: 8080 / auth - Mozilla / 5.0 (Windows NT 10.0; Win64; x64; rv: 76.0) Gecko / 20100101 Firefox / 76.0 -

Chrome

  • :: 1 - POST - / вход - 200 - 545 - 106,758 мс http://localhost: 8080 / auth - Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (K HTML, как Gecko) Chrome / 83.0. 4103.61 Safari / 537.36 -

  • :: 1 - ОПЦИИ - / signin - 204-0 - 0,163 мс http://localhost: 8080 / auth - Mozilla / 5.0 ( Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (K HTML, как Gecko) Chrome / 83.0.4103.61 Safari / 537.36 -

Ожидается:

Firefox

Chrome

Мой код:

app.use((req,res,next) => {
    const logger = morgan(function (tokens, req, res) {     
        return [
            tokens['remote-addr'](req, res), '-',
            tokens.method(req, res), '-',
            tokens.url(req, res), '-',
            tokens.status(req, res), '-',
            tokens.res(req, res, 'content-length'), '-',
            tokens['response-time'](req, res), 'ms',
            tokens.referrer(req, res), '-',
            tokens['user-agent'](req, res), '-',
            ].join(' ')
        })
    logger(req,res,next)
})

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

Я использую компонент под названием: app.use (require ('express -useragent'). express ())

const navigator = req.useragent.browser

0 голосов
/ 27 мая 2020

var result = accessLogEntry.replace(/(?<=auth\s-\s).*(?=(?:Firefox|Chrome)\/[\d\.]+)/g, "");

Это решит большинство ваших проблем. Во втором примере chrome в списке останутся версии Chrome и Safari. Вам нужно будет определить, какой из них является правильным браузером. Это приведет к удалению всего мусора в середине записи журнала.

Demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...