unity收集log工具
参考
yusong:http://www.xuanyusong.com/archives/2477
凉鞋 :https://www.cnblogs.com/liangxiegame/p/Unity-you-xi-kuang-jia-da-jian-ba-jian-shao-jia-ba.html
根据网上的资料进行整合改整了下
使用线程刷
生成的文件在 persistentDataPath目录下
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Threading; public class OutLog : MonoBehaviour
{
private object mLogLock = null;
private Thread mFileLogThread = null;
static List<string> mLines = new List<string>();
static List<string> mWriteTxt = new List<string>();
private string outpath; /// <summary>
/// 也可以手动控制这个手动启动
/// </summary>
void Start()
{
mLogLock = new object();
//Application.persistentDataPath Unity中只有这个路径是既可以读也可以写的。
outpath = Application.persistentDataPath + "/outLog.txt";
//每次启动客户端删除之前保存的Log
if (System.IO.File.Exists(outpath))
{
File.Delete(outpath);
}
//在这里做一个Log的监听(老方法,已弃用)
//Application.RegisterLogCallback(HandleLog); //用线程刷
Application.logMessageReceivedThreaded += HandleLog;
this.mFileLogThread = new Thread(new ThreadStart(WriteLog));
this.mFileLogThread.Start(); //一个输出
Debug.Log("==============Unity客户端Log日志=========");
} /// <summary>
/// 线程刷
/// </summary>
void WriteLog()
{
while (true)
{
//线程锁
lock (mLogLock)
{
if (mWriteTxt.Count > )
{
string[] temp = mWriteTxt.ToArray();
foreach (string t in temp)
{
using (StreamWriter writer = new StreamWriter(outpath, true, Encoding.UTF8))
{
writer.WriteLine(t);
}
mWriteTxt.Remove(t);
}
}
}
}
} /// <summary>
/// 用update来刷(已经弃用)
/// </summary>
void UpdateNotUse()
{
//因为写入文件的操作必须在主线程中完成,所以在Update中哦给你写入文件。
if (mWriteTxt.Count > )
{
string[] temp = mWriteTxt.ToArray();
foreach (string t in temp)
{
using (StreamWriter writer = new StreamWriter(outpath, true, Encoding.UTF8))
{
writer.WriteLine(t);
}
mWriteTxt.Remove(t);
}
}
} public static string getHead()
{
return "[" + System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + "] ";
} void HandleLog(string logString, string stackTrace, LogType type)
{
mWriteTxt.Add(getHead() + logString);
if (type == LogType.Error || type == LogType.Exception)
{
//Log(logString);
//Log(stackTrace);
mWriteTxt.Add("ERROR: " + stackTrace);
}
} //这里我把错误的信息保存起来,用来输出在手机屏幕上(暂时关闭)
static public void Log(params object[] objs)
{
string text = "";
for (int i = ; i < objs.Length; ++i)
{
if (i == )
{
text += objs[i].ToString();
}
else
{
text += ", " + objs[i].ToString();
}
}
if (Application.isPlaying)
{
if (mLines.Count > )
{
mLines.RemoveAt();
}
mLines.Add(text); }
} void OnGUI()
{
GUI.color = Color.red;
for (int i = , imax = mLines.Count; i < imax; ++i)
{
GUILayout.Label(mLines[i]);
}
}
}
unity收集log工具的更多相关文章
- 可显示行号的log工具
import android.util.Log; /** * (ExtendedLog=>ELog)可以记录行号,类名,方法名的Log工具 * * @author Fantouch */ pub ...
- Unity自动打包工具
转载 https://blog.csdn.net/ynnmnm/article/details/36774715 最开始有写打包工具的想法,是因为看到<啪啪三国>王伟峰分享的一张图,他们有 ...
- Android Log工具之Luffy
Luffy Luffy可以在手机端实时显示你App中的logcat输出.并且具有Log等级与Tag过滤功能.另外Luffy还支持收集Log,保存Log和查看本地log功能. 使用方法 1.Gradle ...
- Unity3D之IOS&Android收集Log文件
开发项目的时候尤其在处理与服务器交互这块,如果服务端程序看不到客户端请求的Log信息,那么无法修改BUG.在Windows上Unity会自动讲Log文件写入本地,但是在IOS和Android上确没有这 ...
- (转)Unity3D研究院之IOS&Android收集Log文件
转自:http://www.xuanyusong.com/archives/2477 有段时间没有写过文章了,不知道大伙儿还记得雨松MOMO吗? 嘿嘿. 开发项目的时候尤其在处理与服务器交互这块,如果 ...
- Unity3D研究院之IOS&Android收集Log文件(六十二)
开发项目的时候尤其在处理与服务器交互这块,如果服务端程序看不到客户端请求的Log信息,那么无法修改BUG.在Windows上Unity会自动讲Log文件写入本地,但是在IOS和Android上确没有这 ...
- Unity 实现Log实时输出到屏幕或控制台上<一>
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/49818953 作者:car ...
- Unity 单元测试(PLUnitTest工具)
代码测试的由来 上几个星期上面分配给我一个装备系统,我经过了几个星期的战斗写完90%的代码. 后来策划告诉我需求有一定的改动,我就随着策划的意思修改了代码. 但是测试(Xu)告诉我装备系统很多功能都用 ...
- 如何为你的美术妹子做Unity的小工具(二)
你想像这样一样 为自己的Unity 小工具打开一个Unity的窗口吗? 看起来就很厉害对不对 妹子看了还不激动吗 ?!
随机推荐
- Python之set集合与collections系列
1>set集合:是一个无序且不重复的元素集合:访问速度快,解决了重复的问题: s2 = set(["che","liu","haha" ...
- Javascript与数据结构系列(二)——队列的实现
队列实现 使用数组来实现队列看起来顺理成章.JavaScript 中的数组具有其他编程语言中没有的优点, 数组的 push() 方法可以在数组末尾加入元素,shift() 方法则可删除数组的第一个元素 ...
- asp.net——Ajax与ashx异步请求的简单案例
Ajax与ashx异步请求的简单案例: 前台页面(aspx): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...
- SQL Server分页模板
SQL Server分页模板 WITH T AS ( SELECT ROW_NUMBER() OVER(ORDER BY AlbumId ) AS row_number, * FROM (SELECT ...
- Python【运算符】
本文介绍 1.Python运算符 运算符分类 运算符分为:算数运算.比较运算.逻辑运算.赋值运算.成员运算.身份运算.位运算 一.算数运算:返回数字 假设变量a=10,b=20 运算符: + 相加a+ ...
- PXE-cobbler 无人值守装机
Cobbler PXE 自动安装系统(CentOS-7.2) 第一步:系统环境准备 1.查看系统版本与内核 2.关闭防火墙 3.关闭selinux 第二步:安装cobbler 与环境相关组件 1.下 ...
- 非固定参数:*args和 **kwargs
先看一个固定参数栗子: def func1(x, args): print(x, args) func1(1,22) ====================1 22 ================ ...
- D. Magic Box(几何)
One day Vasya was going home when he saw a box lying on the road. The box can be represented as a re ...
- 如何在linux上安装使用virt-manager
环境是centos6.5-64位操作系统. 1.准备yum源: 将CentOS6-Base-163.repo 下载到目标主机的/etc/yum.repos.d/目录. cd /etc/yum.repo ...
- bzoj2705Longge的问题
题目链接 题意很简单 $$ans=\sum_{i=1}^{n}gcd(i,n)$$ 然后推一下式子,求一下欧拉函数就好了 细节是由于$BZOJ$的评测计时策略, 不能线性筛啊$……$ 必须每个数单独筛 ...