当前位置: 首页 > 知识库问答 >
问题:

我们如何记录每个http请求和响应,并将其保存到express中的数据库

尹乐邦
2023-03-14

我试图将所有传入的请求及其响应保存到数据库中。

我正试图使用express winston npm包实现这一点,它正在控制台中记录响应主体和请求。但我想把它保存在数据库里。我该怎么做????

var winston = require("winston");
var expressWinston = require("express-winston");

expressWinston.requestWhitelist.push("body");
// expressWinston.responseWhitelist.push("body");
app.use(
  expressWinston.logger({
    transports: [
      new winston.transports.Console({
        json: true,
        colorize: true
      })
    ]
  })
);
expressWinston.responseWhitelist.push("body");

我正在控制台中获取此日志。

{"level":"info","消息":"HTTP GET /ideas/category/hello","meta":{"res":{"statusCode": 200,"body":{"hiiii":"djdjdjdjdd"}},"req":{"url":"/想法/类别/你好","标头":{"host":"localhost:5000","连接":"保持活力","升级-不安全-请求":"1","用户代理":"Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,像壁虎)Chrome/75.0.3770.100Safari /537.36","接受":"text/html,应用程序/xhtml xml,应用程序/xml;q=0.9,图像/webp,图像/apng,/;q=0.8,应用程序/签名交换;v=b3","接受编码":"gzip,收缩,br","接受语言":"en-GB,en;q=0.9,en-US;q=0.8,hi;q=0.7","cookie":"connect.sid=s: 90PCwDOrv0v9yeSYZq-4I4Quactbcduq.8EpLenv6t1lCPqLcV5R1o1/F15p9kEBqrZ82FBHiYJA"},"方法":"GET","http pVersion":"1.1","原始URL":"/想法/类别/你好","查询":{}},"响应时间": 2}}

共有1个答案

焦驰
2023-03-14

做了一些研究后,我得到了答案。我们可以使用winston sql transport npm包实现这一点。请参见下面给出的代码:

const { Logger } = require('winston');
const { SQLTransport } = require('./../lib/winston-sql-transport');

const logger = new Logger({
  transports: [
    new SQLTransport({
      tableName: 'winston_logs',
    })]
});

module.exports = logger;
 类似资料:
  • 在Vertx WebClient中记录传出http请求和响应的最简单方法是什么。我正在寻找类似于httpserver LoggerHandler的东西,但接下来是webclient的输出请求。

  • 使用Netty 4.0.0.beta1,对我来说,将传入/传出HTTP流量记录到基于Netty的服务器的最佳方式是什么?我的管道当前为: 我尝试编写一个实现的处理程序,然后在方法中进行日志记录,这似乎对传入的请求很好,但这是推荐的方式吗? 当我试图实现时,我未能在方法中看到实际的FullHttpResponse对象。 建议?谢了!

  • 我试图记录应用程序中的每个传入请求和传出响应。我正在使用jee 6,所以我没有ContainerRequestFilter和ContainerResponseFilter类。所以我决定用滤镜。 我用@WebFilter(“/*”)注释了一个类,并实现了Filter接口。我成功地读取了请求头和请求正文。我也很难阅读响应标题和响应正文。下面是代码片段 MyHttpServletResponse seW

  • 我在改型API中找不到记录完整请求/响应体的相关方法。我希望在探查器中得到一些帮助(但它只提供关于响应的元数据)。我尝试在构建器中设置日志级别,但这也没有帮助: 编辑:此代码正在工作。我不知道为什么它在早些时候不起作用。可能是因为我用的是旧版本的改装。

  • 在spring中提供了三种不同的方法来连接响应端: 我的目标是记录每个响应(标题状态代码),不管结果如何。 我怎样才能知道上述哪种方法是正确的?

  • 应用程序应异步(在单独的线程中)记录以下信息,而不会影响客户端。 请求HTTP方法和URI 如果我们在过滤器中使用,那么spring将无法再次使用它进行json到对象的映射。在输入流到对象映射期间的某个地方,我们可以插入记录器吗? 更新: 我们可以在MessageConverter中编写日志代码,但这似乎不是一个好主意。