0

我需要收集应用程序中的用户访问日志,主要是他正在使用的浏览器的名称和版本。但是,摩根带来了许多我不需要的细节,你能帮帮我吗?

目前:

火狐

  • ::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 -

铬合金

  • ::1 - POST - /signin - 200 - 545 - 106.758 毫秒http://localhost:8080/auth - Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如 Gecko)Chrome/83.0。 4103.61 Safari/537.36 -

  • ::1 - 选项 - /signin - 204 - 0 - 0.163 ms http://localhost:8080/auth - Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0。 4103.61 Safari/537.36 -

预期的:

火狐

铬合金

我的代码:

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)
})
4

2 回答 2

0

我正在使用一个名为:app.use(require('express-useragent').express()) 的组件

const navigator = req.useragent.browser

于 2020-05-29T12:52:59.827 回答
0

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

这可以解决您的大部分问题。在您的第二个 chrome 示例中,它将列出 Chrome 和 Safari 版本。您需要确定哪一个是正确的浏览器。这将删除日志条目中间的所有垃圾。

演示

于 2020-05-27T19:00:10.483 回答