123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- -- 写入埋点日志服务
- local skynet = require "skynet"
- local statLogger = require "statLogger"
- local baseService = require("baseService")
- local command = {}
- local loggerList = {}
- local function writeLog(filename, message)
- local fileLogger = loggerList[filename]
- if not fileLogger then
- fileLogger = statLogger.new(filename)
- loggerList[filename] = fileLogger
- end
- fileLogger:write(message)
- end
- function command.writeLog(filename, message)
- writeLog(filename, message)
- end
- function command.writeLogList(msg)
- for i, v in ipairs(msg) do
- if v.filename and v.dataStr then
- writeLog(v.filename, v.dataStr)
- end
- end
- end
- -- 关闭长期不写入的文件句柄(24小时)
- local function clearInvaild()
- local currTime = os.time()
- local closeFiles = {}
- for filename, fileLogger in pairs(loggerList) do
- if fileLogger.lastWriteTime and currTime - fileLogger.lastWriteTime >= 24 * 60 * 60 then
- pcall(skynet.send, ".logMgr", "lua", "close", fileLogger.filename)
- table.insert(closeFiles, filename)
- end
- end
- for _, filename in ipairs(closeFiles) do
- loggerList[filename] = nil
- end
- create_timeout(60 * 100, clearInvaild)
- end
- function command.onStart()
- create_timeout(60 * 100, clearInvaild)
- end
- baseService.setNickName("writeLogSrv_" .. skynet.self())
- baseService.start(command)
|