javascript - 如何在 nodejs 中使用 morgan 和 winston.js 格式获取 OriginURL?
问题描述
我正在尝试在 nodejs 项目(代码)中使用 winston.js 和 morgan 从消息属性中获取 originalURL:
winstone.je
const { createLogger, format, transports } = require('winston');
const { combine, timestamp, label, printf } = format;
const myFormat = printf(({ level, message, label, timestamp }) => {
return `${timestamp} ${level}: ${message}`;
});
const logger = createLogger({
format: combine(
label({ label: 'right meow!' }),
timestamp(),
myFormat
),
transports: [new transports.Console()]
});
应用程序.js
app.use(morgan('combined', { stream: winston.stream }));
的输出是:
2019-03-12T13:35:50.112Z : ::1 - - [12/Mar/2019:13:35:50 +0000] "GET /api/bar/origin/000a HTTP/1.1"
我正在寻找的是获得这部分:“GET /api/bar/origin/000a HTTP/1.1”,而不使用消息属性上的子字符串或切片,有没有办法从 myFormat const 获取 origineURL?
解决方案
好吧,根据 Morgan 文档,您可以使用预定义的格式 ( combined
, tiny
, ...) 更改输出格式,也可以自己制作应该如下所示的格式app.use(morgan(':method :url HTTP/:http-version', { stream: winston.stream }));
推荐阅读
- jestjs - Jest 无法测试指挥官帮助功能
- python - anaconda 环境中 pymeep-parallel 的包冲突
- angular - 如何通过 Angular 8 中的 id 获取元素来更改类并更改 div 的样式
- javascript - 恢复文件上传
- python - 如何有条件地删除熊猫中的行
- java - 如何将 RESTService 从我的核心应用程序导入到 JBPMSuite
- sql - 在oracle中如何从用户表的电子邮件列中检索具有@gmail扩展邮件的用户
- java - 违反清洁编码原则?
- ubuntu - 查找不包含字符串的最大文件
- java - 将字符串拆分为 2 个相同的单词