更新引擎架设
This commit is contained in:
parent
0d68bab4d1
commit
69a685bc0e
1 changed files with 158 additions and 0 deletions
158
Mirserver/Mir200/Envir/3rd/log/Logger.lua
Normal file
158
Mirserver/Mir200/Envir/3rd/log/Logger.lua
Normal file
|
|
@ -0,0 +1,158 @@
|
||||||
|
-- 日志文件路径
|
||||||
|
local logpath = string.format("3rd/debug_log/%s.log", os.date("%Y%m%d"))
|
||||||
|
|
||||||
|
-- 创建日志文件夹
|
||||||
|
function LOGCreate()
|
||||||
|
os.execute("mkdir \"3rd/debug_log\" >nul 2>nul")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- 将表中的元素连接成字符串
|
||||||
|
local function concat(t)
|
||||||
|
local ret = ""
|
||||||
|
for _, v in pairs(t) do
|
||||||
|
if string.len(ret) == 0 then
|
||||||
|
ret = tostring(v)
|
||||||
|
else
|
||||||
|
ret = ret .. " " .. tostring(v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return ret
|
||||||
|
end
|
||||||
|
|
||||||
|
-- 获取当前时间戳
|
||||||
|
local function timestamp()
|
||||||
|
local t = os.date("*t")
|
||||||
|
return string.format("[%04d-%02d-%02d %02d:%02d:%02d]",
|
||||||
|
t.year, t.month, t.day, t.hour, t.min, t.sec)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- 获取源代码行信息
|
||||||
|
local function src_line(debug_level)
|
||||||
|
local info = debug.getinfo(debug_level)
|
||||||
|
local filename = string.match(info.short_src, "[^/.]+.lua")
|
||||||
|
return string.format("[%s:%d]", filename, info.currentline)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- 写入日志
|
||||||
|
local function _write(...)
|
||||||
|
local f = io.open(logpath, "a")
|
||||||
|
if f then
|
||||||
|
local str = timestamp()..src_line(4).." "..concat({...})
|
||||||
|
f:write(str.."\n")
|
||||||
|
f:close()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- 打印表的内容到日志文件
|
||||||
|
local function _dump(value, desciption, nesting)
|
||||||
|
local f = io.open(logpath, "a")
|
||||||
|
if not f then return end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if desciption then
|
||||||
|
desciption = timestamp()..src_line(4)..desciption
|
||||||
|
else
|
||||||
|
desciption = timestamp()..src_line(4)
|
||||||
|
end
|
||||||
|
|
||||||
|
if type(nesting) ~= "number" then nesting = 3 end
|
||||||
|
|
||||||
|
local lookupTable = {}
|
||||||
|
local result = {}
|
||||||
|
|
||||||
|
local function _v(v)
|
||||||
|
if type(v) == "string" then
|
||||||
|
v = "\"" .. v .. "\""
|
||||||
|
end
|
||||||
|
return tostring(v)
|
||||||
|
end
|
||||||
|
|
||||||
|
local traceback = string.split(debug.traceback("", 2), "\n")
|
||||||
|
-- print("dump from: " .. string.trim(traceback[3]))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
local function _dump(value, desciption, indent, nest, keylen)
|
||||||
|
desciption = desciption or "<var>"
|
||||||
|
local spc = ""
|
||||||
|
if type(keylen) == "number" then
|
||||||
|
spc = string.rep(" ", keylen - string.len(_v(desciption)))
|
||||||
|
end
|
||||||
|
if type(value) ~= "table" then
|
||||||
|
result[#result +1 ] = string.format("%s%s%s = %s", indent, _v(desciption), spc, _v(value))
|
||||||
|
elseif lookupTable[value] then
|
||||||
|
result[#result +1 ] = string.format("%s%s%s = *REF*", indent, desciption, spc)
|
||||||
|
else
|
||||||
|
lookupTable[value] = true
|
||||||
|
if nest > nesting then
|
||||||
|
result[#result +1 ] = string.format("%s%s = *MAX NESTING*", indent, desciption)
|
||||||
|
else
|
||||||
|
result[#result +1 ] = string.format("%s%s = {", indent, _v(desciption))
|
||||||
|
local indent2 = indent.." "
|
||||||
|
local keys = {}
|
||||||
|
local keylen = 0
|
||||||
|
local values = {}
|
||||||
|
for k, v in pairs(value) do
|
||||||
|
keys[#keys + 1] = k
|
||||||
|
local vk = _v(k)
|
||||||
|
local vkl = string.len(vk)
|
||||||
|
if vkl > keylen then keylen = vkl end
|
||||||
|
values[k] = v
|
||||||
|
end
|
||||||
|
table.sort(keys, function(a, b)
|
||||||
|
if type(a) == "number" and type(b) == "number" then
|
||||||
|
return a < b
|
||||||
|
else
|
||||||
|
return tostring(a) < tostring(b)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
for i, k in ipairs(keys) do
|
||||||
|
_dump(values[k], k, indent2, nest + 1, keylen)
|
||||||
|
end
|
||||||
|
result[#result +1] = string.format("%s}", indent)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
_dump(value, desciption, "- ", 1)
|
||||||
|
|
||||||
|
for i, line in ipairs(result) do
|
||||||
|
f:write(line.."\n")
|
||||||
|
end
|
||||||
|
|
||||||
|
f:close()
|
||||||
|
end
|
||||||
|
|
||||||
|
-- 打印日志到控制台
|
||||||
|
local function _print(...)
|
||||||
|
local str = timestamp()..src_line(4).." "..concat({...})
|
||||||
|
release_print(str)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- 是否开启调试模式
|
||||||
|
local DEBUG = true --debug模式,true打印日志
|
||||||
|
-- local DEBUG = false
|
||||||
|
|
||||||
|
-- 打印日志
|
||||||
|
function LOGPrint(...)
|
||||||
|
if not DEBUG then return end
|
||||||
|
_print(...)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- 写入日志
|
||||||
|
function LOGWrite(...)
|
||||||
|
if not DEBUG then return end
|
||||||
|
_write(...)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- 打印表的内容到日志文件
|
||||||
|
function LOGDump(value, desciption, nesting)
|
||||||
|
if not DEBUG then return end
|
||||||
|
_dump(value, desciption, nesting)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- 打印调用堆栈到日志文件
|
||||||
|
function LOGStack()
|
||||||
|
local str = debug.traceback()
|
||||||
|
LOGWrite(str)
|
||||||
|
end
|
||||||
Loading…
Reference in a new issue