Posted on 

syslog data format

最近在学习一下 apisix, 发现他的日志插件很久很玄学,看上去不工作。测试一下发现果真是这样的。

debug

然后就开始 debug 了,创建了一个 issues : syslog plugin looks doesn’t work

有个社区老哥很热心,第二天就给我发了 PR (好人啊🫠)

Screenshot via Cisco
Screenshot via Cisco

关键代码

以下代码均复制从 apisix 项目中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function _M.encode(facility, severity, hostname, appname, pid, project,
logstore, access_key_id, access_key_secret, msg)
local pri = (Facility[facility] * 8 + Severity[severity])
local t = log_util.get_rfc3339_zulu_timestamp()
if not hostname then
hostname = "-"
end

if not appname then
appname = "-"
end

return "<" .. pri .. ">1 " .. t .. " " .. hostname .. " " .. appname .. " " .. pid
.. " - [logservice project=\"" .. project .. "\" logstore=\"" .. logstore
.. "\" access-key-id=\"" .. access_key_id .. "\" access-key-secret=\""
.. access_key_secret .. "\"] " .. msg .. "\n"
end

return _M

上面代码其实其实不太符合它的文件名rfc5424.lua, 里面有一些奇怪代码东西没有定义在 rfc 里面。不过热心老哥的 pr 里面修正了。