2

我想将每个请求的 JSON 字符串写入访问日志中,以便以后使用它更容易。

我正在使用 Lapis/Openresty 公开的 print(),但是我想覆盖时间戳、日志级别和其他属于 nginx 日志格式的信息。

我怎样才能覆盖它?

4

1 回答 1

5

要使用 json 填充访问日志,您可以在 nginx.conf 中使用类似这样的内容:

log_format mydef "$json_log";
access_log logs/access.log mydef;
server {
    ...
    set $json_log '';
    log_by_lua_block {
        local json = require "cjson"
        ngx.var.json_log = json.encode({my_json_data = 1})
    }
}

如果你想删除 nginx 错误日志中的默认前缀,这是不可能的,因为格式是在 nginx 的源代码中硬编码的。

但是,您可以在上下文中以自定义格式log_by_lua向您的消费者提供数据。

于 2016-10-31T06:50:09.353 回答