mirror of
https://github.com/appgurueu/modlib.git
synced 2024-08-20 13:24:11 +02:00
67 lines
1.8 KiB
Lua
67 lines
1.8 KiB
Lua
-- Log helpers - write to log, force writing to file
|
|
minetest.mkdir(minetest.get_worldpath().."/logs")
|
|
channels={}
|
|
last_day=os.date("%d")
|
|
function get_path(logname)
|
|
return minetest.get_worldpath().."/logs/"..logname
|
|
end
|
|
function create_channel(title)
|
|
local dir=get_path(title)
|
|
minetest.mkdir(dir)
|
|
channels[title]={dirname=dir,queue={}}
|
|
write(title, "Initialisation")
|
|
end
|
|
function write(channelname, msg)
|
|
local channel=channels[channelname]
|
|
local current_day=os.date("%d")
|
|
if current_day ~= last_day then
|
|
last_day=current_day
|
|
write_to_file(channelname, channel, os.date("%Y-%m-%d"))
|
|
end
|
|
table.insert(channel.queue, os.date("[%H:%M:%S] ")..msg)
|
|
end
|
|
function write_to_all(msg)
|
|
for channelname, _ in pairs(channels) do
|
|
write(channelname, msg)
|
|
end
|
|
end
|
|
function write_to_file(name, channel, current_date)
|
|
if not channel then
|
|
channel=channels[name]
|
|
end
|
|
if #(channel.queue) > 0 then
|
|
local filename=channel.dirname.."/"..(current_date or os.date("%Y-%m-%d"))..".txt"
|
|
local rope={}
|
|
for _, msg in ipairs(channel.queue) do
|
|
table.insert(rope, msg)
|
|
end
|
|
modlib.file.append(filename, table.concat(rope, "\n").."\n")
|
|
channels[name].queue={}
|
|
end
|
|
end
|
|
function write_all_to_file()
|
|
local current_date=os.date("%Y-%m-%d")
|
|
for name, channel in pairs(channels) do
|
|
write_to_file(name, channel, current_date)
|
|
end
|
|
end
|
|
|
|
local timer=0
|
|
|
|
minetest.register_globalstep(function(dtime)
|
|
timer=timer+dtime
|
|
if timer > 5 then
|
|
write_all_to_file()
|
|
timer=0
|
|
end
|
|
end)
|
|
|
|
minetest.register_on_mods_loaded(function()
|
|
write_to_all("Mods loaded")
|
|
end)
|
|
|
|
minetest.register_on_shutdown(function()
|
|
write_to_all("Shutdown")
|
|
write_all_to_file()
|
|
end)
|