1 Star 0 Fork 7

王辉/easy_ngx_waf

forked from 克莱里昂/easy_ngx_waf 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
log.lua 1.39 KB
一键复制 编辑 原始数据 按行查看 历史
chleniang 提交于 2023-05-12 19:40 +08:00 . init
-- log_by_lua 阶段,处理 easy_ngx_waf 日志
local log_tbl = ngx.ctx.easy_ngx_waf_log
if (not log_tbl) or type(log_tbl) ~= "table" then
return
end
local config = require("config")
-- 重新打开waf日志文件
if not g_log_file_handle then
g_log_file_handle = io.open(config.waf_log_file, "a+")
if not g_log_file_handle then
ngx.log(ngx.ERR, "[easy_waf] log file open failed at ngx log phase.")
return
end
end
local json_safe = require("cjson.safe")
json_safe.encode_empty_table_as_object(false)
-- "/" 保持原样,不转义(false)
json_safe.encode_escape_forward_slash(false)
-- cjson encode()无法保证key的顺序,不用encode()
-- local ok, log_str = pcall(json_safe.encode, log_tbl)
-- if not ok then
-- return
-- end
-- cjson encode()无法保证key的顺序,日志文件不规范,此处改为手动拼接字符串方式
local log_str = '{"ip":"' .. (log_tbl["ip"] or "unknown")
.. '","time":"' .. (log_tbl["time"] or "unknown")
.. '","host":"' .. (log_tbl["host"] or "unknown")
.. '","req":"' .. (log_tbl["req"] or "unknown")
.. '","ua":"' .. (log_tbl["ua"] or "unknown") .. '"'
local end_str
local ok, msg_str = pcall(json_safe.encode, log_tbl["msg"])
if ok then
end_str = ',"msg":' .. msg_str .. "}\n"
else
end_str = ',"msg":[]' .. "}\n"
end
g_log_file_handle:write(log_str .. end_str)
g_log_file_handle:flush()
-- g_log_file_handle:close()
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Lua
1
https://gitee.com/hzdwang/easy_ngx_waf.git
git@gitee.com:hzdwang/easy_ngx_waf.git
hzdwang
easy_ngx_waf
easy_ngx_waf
master

搜索帮助