cocos 模仿dump寫了一個寫錯誤日志的函數(shù)


--require("src.app.utils.FileUtil") 可能會需要包含這個文件
ErrorPath = "error.log"     --記錄錯誤日志路徑 默認(rèn)與exe 同級目錄
--寫錯誤日志 表
function dumpError(value, desciption, nesting)

    io.writefile(ErrorPath, "===================================\n", "a")
    local osData = os.date("%Y年%m月%d日_%H時%M分%S秒",os.time())
    io.writefile(ErrorPath, osData .. "\n", "a")

    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>"
        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
        --print(line)
        io.writefile(ErrorPath, line .. "\n", "a")
    end

    io.writefile(ErrorPath, "\n", "a")
end

--寫錯誤日志
function g_writeErrorLog(data, desciption, isClearWrite)

    if not desciption then
        desciption = "var"
    end

    if isClearWrite then            --是否清空歷史log
        io.writefile(ErrorPath, "", "w")
    end

    if type(data) ~= "table" then
        io.writefile(ErrorPath, "===================================\n", "a")
        local osData = os.date("%Y年%m月%d日_%H時%M分%S秒",os.time())
        io.writefile(ErrorPath, osData .. "\n", "a")
    end

    local str = ""
    local function arrayToString(array)
        str = str .. "{\n"
        for k, v in pairs(array) do
            if type(v) == "number" then
                str = str .. k .. "=" .. v .. ",\n"
            elseif type(v) == "string" then
                str = str .. k .. "=" .. "\"" .. v .. "\"" .. ",\n"
            elseif type(v) == "table" then
                arrayToString(v)
            end
        end
        str = str .. "},\n"
        return str
    end

    if type(data) == "number" then

        str = desciption .. " = " .. data .. "\n"
        io.writefile(ErrorPath, str, "a")

    elseif type(data) == "string" then

        str = desciption .. " = " .. "\"" .. data .. "\"" .. "\n"
        io.writefile(ErrorPath, str, "a")

    elseif type(data) == "table" then

        dumpError(data, desciption, 10)

    end

end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末煤率,一起剝皮案震驚了整個濱河市阿迈,隨后出現(xiàn)的幾起案子惭蟋,更是在濱河造成了極大的恐慌捕虽,老刑警劉巖瘾杭,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挥下,死亡現(xiàn)場離奇詭異揽祥,居然都是意外死亡讽膏,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門拄丰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來府树,“玉大人,你說我怎么就攤上這事料按⊙傧溃” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵载矿,是天一觀的道長遭铺。 經(jīng)常有香客問我,道長恢准,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任甫题,我火速辦了婚禮馁筐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坠非。我一直安慰自己敏沉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布炎码。 她就那樣靜靜地躺著盟迟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪潦闲。 梳的紋絲不亂的頭發(fā)上攒菠,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機(jī)與錄音歉闰,去河邊找鬼辖众。 笑死,一個胖子當(dāng)著我的面吹牛和敬,可吹牛的內(nèi)容都是我干的凹炸。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼昼弟,長吁一口氣:“原來是場噩夢啊……” “哼啤它!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤变骡,失蹤者是張志新(化名)和其女友劉穎离赫,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锣光,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡笆怠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了誊爹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蹬刷。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖频丘,靈堂內(nèi)的尸體忽然破棺而出办成,到底是詐尸還是另有隱情,我是刑警寧澤搂漠,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布迂卢,位于F島的核電站,受9級特大地震影響桐汤,放射性物質(zhì)發(fā)生泄漏而克。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一怔毛、第九天 我趴在偏房一處隱蔽的房頂上張望员萍。 院中可真熱鬧,春花似錦拣度、人聲如沸碎绎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽筋帖。三九已至,卻和暖如春冤馏,著一層夾襖步出監(jiān)牢的瞬間日麸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工逮光, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赘淮,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓睦霎,卻偏偏與公主長得像梢卸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子副女,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容