-------save logfunction gcs_log(info,text)
--loglevel 是一个变量,由系统启动是传入的值
if loglevel == "not" then
return nil
end
local infonum = 0
local loglevelnum = 0
if info == "debug" then
infonum = 5
elseif info == "info" then
infonum = 3
elseif info == "error" then
infonum = 1
end
if loglevel == "debug" then
loglevelnum = 5
elseif loglevel == "info" then
loglevelnum = 3
elseif loglevel == "error" then
loglevelnum = 1
end
if infonum <= loglevelnum then
local file = io.open(logfile,"a")
local timenum = ngx.now()
local timestr = tostring(timenum)
timestr = string.sub(timestr,11)--取ms
timestr = "["..os.date("%Y-%m-%d %H:%M:%S",timenum)..timestr.."]"
file:write(timestr..":["..info.."]:"..text)
file:write("\r\n")
file:close()
file = nil
end
end
----------------------
不过我们的代码还有几个问题主要是性能的问题,我们每次记录日志都需要打开和关闭一次文件,这样不太好,后期希望把文件打开的句柄放在openresty中,听春哥说过一次,不过不知道怎么实现?
还可以采用ffi,调用C的接口去写文件,这样效果会更好些?
还可以增加一些代码做日志的截断之类的工作。
我自己对 gdb 风格的交互式调试方式并不热衷,因为容易迷失上下文,或者干扰代码运行时的正常时序。当然,gdb 在分析 core dump