提问人:Arieh Leviav 提问时间:8/1/2019 最后编辑:Arieh Leviav 更新时间:8/4/2019 访问量:1054
nginx 模块为日志模块设置变量值
nginx module to set variable value for log module
问:
我想定义一个 nginx 变量,在请求期间设置其值,并在日志格式中使用该变量。
我目前正在用 C 语言实现一个自定义模块(目前对 LUA 不感兴趣)。
所需流量:
1.配置新的日志格式:(nginx.conf)
2.使用以下格式配置新的访问日志:(nginx.conf)
3.在请求处理程序期间设置值,函数类型如下:log_format my_format '$my_var1';
access_log /tmp/out my_format
typedef ngx_int_t (*ngx_http_handler_pt)(ngx_http_request_t *r);
电流:
1.将变量设置为初始值:(nginx.conf)
2.用
3 按索引查找变量。通过赋值给数据字段来更改变量值。set $my_var1 'empty_value';
ngx_http_get_flushed_variable(r, index)
当我将变量打印到调试日志时,我看到变量已正确设置为更改的值。但是,日志模块将初始变量值(而不是更改值)输出到自定义访问日志。
有人可以指出我在这里错过了什么吗?
我应该使用函数还是使用脚本编译/复杂?ngx_http_add_variable
上述当前流程的简短片段:
ngx_http_variable_value_t *v;
v = ngx_http_get_flushed_variable(r, ale_srv_cf->output_variable_index);
// ... error handling if not found ....
v->data = new_value;
v->len = new_value_length;
答: 暂无答案
评论
ngx_stream_log_flush