当使用ngx.log()时,如何提供更多的上下文信息?

我想为我们的OpenResty应用程序提供结构化日志记录。我们的目标是实现MDC(Mapped Diagnostic Context)或类似的东西。

目前,调用ngx.log(ngx.NOTICE,"foo")会得到类似于以下内容:

2019/01/31 17: 39: 50 [notice] 1616:* 1 [lua] example_logging.lua:20:myfunc():foo,client:172.17.0.1,server:_,request:"GET /example HTTP/1.1",host:"localhost:8080"

也就是说,日志自动为以下内容添加了键/值对:

  • 服务器
  • 客户端
  • 请求
  • 主机

是否有一种机制可以在不修改对ngx.log()的调用而是在其他地方注入所需数据的情况下添加更多的键/值对呢?

该应用程序使用OpenResty 1.11.2.1-2。

点赞
用户9783845
用户9783845

我认为这是不可能的。ngx.log只是一个微小的包装器(12),用于 ngx_log_error 并有硬编码的信息格式,而且 ngx_log_error 的信息格式也是不可配置的。

OpenResty核心开发者的老但仍然相关的评论:

嗯,ngx.log()是用于错误日志记录的。它只是调用了nginx核心的错误日志记录器,与访问日志记录不同,不支持自定义格式。

2019-03-01 18:51:15