mirror of
https://github.com/JamesonHuang/OpenWrt_Luci_Lua.git
synced 2024-11-24 06:10:11 +00:00
50 lines
1.2 KiB
Lua
50 lines
1.2 KiB
Lua
-------------------------------------------------------------------------------
|
|
-- Saves logging information in a file
|
|
--
|
|
-- @author Thiago Costa Ponte (thiago@ideais.com.br)
|
|
--
|
|
-- @copyright 2004-2013 Kepler Project
|
|
--
|
|
-------------------------------------------------------------------------------
|
|
|
|
local logging = require"logging"
|
|
|
|
local lastFileNameDatePattern
|
|
local lastFileHandler
|
|
|
|
local openFileLogger = function (filename, datePattern)
|
|
local filename = string.format(filename, os.date(datePattern))
|
|
if (lastFileNameDatePattern ~= filename) then
|
|
local f = io.open(filename, "a")
|
|
if (f) then
|
|
f:setvbuf ("line")
|
|
lastFileNameDatePattern = filename
|
|
lastFileHandler = f
|
|
return f
|
|
else
|
|
return nil, string.format("file `%s' could not be opened for writing", filename)
|
|
end
|
|
else
|
|
return lastFileHandler
|
|
end
|
|
end
|
|
|
|
function logging.file(filename, datePattern, logPattern)
|
|
if type(filename) ~= "string" then
|
|
filename = "lualogging.log"
|
|
end
|
|
|
|
return logging.new( function(self, level, message)
|
|
local f, msg = openFileLogger(filename, datePattern)
|
|
if not f then
|
|
return nil, msg
|
|
end
|
|
local s = logging.prepareLogMsg(logPattern, os.date(), level, message)
|
|
f:write(s)
|
|
return true
|
|
end)
|
|
end
|
|
|
|
return logging.file
|
|
|