init.lua
2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
--[[
@Author : Mr.wang
@Date : 2016-04-22 10:00:30
@Content :
根据"DEBUG"的值控制日志等级
0:NONE
1:INFO
2:DEBUG
外部接口:
logD/logI/logW/logE
print = logI
--]]
if not socket then
require("socket")
end
local log = import(".log")
local helper = import(".helper")
local logout
local level
local print_ = print
-- 输出控制(等级、格式)
if 0 == DEBUG then
-- 不输出任何信息
print("不输出任何信息")
logout = function() end
level = log.NONE
else
if 1 == DEBUG then
level = log.INFO
else
level = log.DEBUG
end
--[[
输出格式:
[14:00:02] warn
[14:00:02] error
--]]
logout = function(self, lv, ...)
local s, ms = unpack(string.split(tostring(socket.gettime()), "."))
local time = os.date("%X", tonumber(s))
-- local tag = string.format("[%s.%04d %5s] ", time, tonumber(ms or 0), lv)
local tag = string.format("[%s] ", time)
-- 输出信息处理
local params = {...}
table.map(params, helper.format)
-- release版本的引擎也能写出来日志
print_(tag.." "..table.concat(params, "\t"))
end
end
local logger = log.new(logout)
-- 导出方法
if not helper.isWindows() then
_G.logD = handler(logger, logger.debug)
_G.logW = handler(logger, logger.warn)
_G.logE = handler(logger, logger.error)
else
--windows下设置控制台颜色
local color = import(".color")
local setColor = color.setColor
local resetColor = function() setColor(color.DEFAULT_COLOR) end
-- debug:绿色
_G.logD = function(...)
setColor(color.GREEN)
logger:debug(...)
resetColor()
end
-- warn:紫色
_G.logW = function(...)
setColor(color.PURPLE)
logger:warn(...)
resetColor()
end
-- error:红色
_G.logE = function(...)
setColor(color.RED)
logger:error(...)
resetColor()
end
end
_G.logI = handler(logger, logger.info)
--_G.print = logI
logD("debug")
logI("info")
logW("socket")
logE("error")
local label = cc.Label:create();
--label:setFontSize(14);
label:setName("logUILable");
label:retain();
label:setColor(cc.c3b(255,0,0));
label:setAnchorPoint(cc.p(0,1));
label:setPosition(cc.p(5,display.height-25));
local function checkLogUI()
if DEBUG == 0 then
return;
end
local runningScene = cc.Director:getInstance():getRunningScene();
if runningScene and not runningScene:getChildByName("logUILable") then
runningScene:addChild(label,2000);
end
end;
cc.Director:getInstance():getScheduler():scheduleScriptFunc(checkLogUI, 1, false);
_G.logUI = function(str)
if DEBUG == 0 then
return;
end
label:setString(label:getString()..str.."\n");
local runningScene = cc.Director:getInstance():getRunningScene();
if runningScene and not runningScene:getChildByName("logUILable") then
runningScene:addChild(label,2000);
end
end