Cocos2d-x 记录游戏日志并上传

在游戏测试过程中我们可能会遇到有些偶发性的Bug不能复现,不能定位的问题,这就很尴尬了。
所以我们在这里实现一下实时记录游戏日志的功能。


记录日志,具体记些什么呢?不可能把每一步都记的很清楚,但是我们在开发过程中,每一步可能会打印一些特定的输出,我们就在输出上做一些手脚,把它的每一行都记录下来。


环境:Cocos2d-x quick


if DEBUG_MODE then
	--把打印的log写入文件
	LOG_FILE_NAME = "log_file.txt"
	BACKUP_LOG_FILE_NAME = "backup_log_file.txt"
	--如果之前写过文件就把之前的替换成备份
	if io.exists(device.writablePath..LOG_FILE_NAME) then
		--检查之前是否有备份
		if io.exists(device.writablePath..BACKUP_LOG_FILE_NAME) then
			--如果有备份则删掉备份
			os.execute("rm "..device.writablePath..BACKUP_LOG_FILE_NAME)
		end
		--把之前的文件替换成备份文件
		io.open(device.writablePath..BACKUP_LOG_FILE_NAME,'a+')
		os.execute("mv " .. device.writablePath..LOG_FILE_NAME .. " " .. device.writablePath..BACKUP_LOG_FILE_NAME)
	end
	--新建一个新的空文件
	print(os.execute("touch "..device.writablePath..LOG_FILE_NAME))


	LOG_FILE_PATH = io.open(device.writablePath..LOG_FILE_NAME,'a+')
	--重写print 让打印的东西能同时写入到文件里
	old_print = print
	print = function (...)
		old_print(...)
		--写入
		if ... then
			local args = {...}
			local s = args[1]
			if #args > 1 then
				for i=2,#args do
					s = s .. "    |    " .. args[i]
				end
			end
			LOG_FILE_PATH:write(tostring(s).."\n")
			LOG_FILE_PATH:flush()
		end
	end
end



记录Log的方法就到此为止了,DEBUG_MODE在开启的时候没写一行print都会向文件里写入一行。


下面说一下上传。

上传我们用了libcurl,因为在iOS和Android的系统中没有集成,所以不能直接调用os.execute(curl xxxxx)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值