[Unity]收集报错日志上传ftp服务器

    游戏一到测试阶段,就想获取游戏测试的报错日志,因为玩家基数大,一个开发团队不可能测试到方方面面,所以收集客户端报错日志就是必须的,有用过腾讯的bugly,官方文档写的云里雾里的,有Unity插件导入,还有安卓工程导入,都没说是两边都需要导入还是怎样,要靠猜,太累。接好后发现只能获取java层的报错,没系统学过,表示压力巨大。

    只好自己写一个来收集报错日志,利用Unity自身的Application.logMessageReceived方法来实现,代码很简单,就是拼接自己想要的报错日志上传。也加了个接口,可以通过lua热更实现关闭上传。

    public static void SetIsOpenCollcetLog(bool bIsCollcetLog)
    {
        LogCollection.bIsCollcetLog = bIsCollcetLog;
    }

    /// <summary>
    /// 初始化
    /// </summary>
    /// <param name="postUrl">上传url</param>
    /// <param name="bIsPostServer">是否上传</param>
    public static void Initialize(bool bIsShowStackTrace = true)
    {
        LogCollection.bIsCollcetLog = true;
        LogCollection.bIsShowStackTrace = bIsShowStackTrace;
        Application.logMessageReceived += HandleMessage;
        LogCollection.logFilePath = Application.persistentDataPath + "/log.txt";
    }

    private static void HandleMessage(string logString, string logStackTrace, LogType logType)
    {
        if (!LogCollection.bIsCollcetLog) return;
        if (string.IsNullOrEmpty(logString) && string.IsNullOrEmpty(logStackTrace)) return;
        if (lastLogString.Equals(logString) && lastLogStackTrace.Equals(logStackTrace) && lastLogType == logType) return;
        lastLogString = logString;
        lastLogStackTrace = logStackTrace;
        lastLogType = logType;

        switch (logType)
        {
            case LogType.Assert:
                tempLog = string.Format("Assert: {0}\nstack trace: {1}", logString, LogCollection.bIsShowStackTrace ? logStackTrace : string.Empty);
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值