Openresty自定义json访问日志

时间:2016-03-11 16:46:55

标签: json nginx customization access-log openresty

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

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

如何覆盖它?

1 个答案:

答案 0 :(得分:0)

要使用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上下文中以自定义格式向您的消费者提供数据。