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的窗口吗? 看起来就很厉害对不对 妹子看了还不激动吗 ?!
随机推荐
- 直接导入用户信息到discuz ucenter.
上一篇帖子: 直接导入帖子到Discuz 论坛数据库. 结束时说要写一篇导入用户的帖子, 一直没时间, 但是咱不能做太监,不是? 所以今天赶快补上. 在做discuz整合或者迁移是, 很多人可能遇到相 ...
- (原创)Log4Net 在多层项目中的使用小记
这几天刚好在调整一个项目,把一些自己不是很清楚的东西先试验一下,这篇文章主要是对我在项目中需要使用Log4Net的一些记录.网上有很多相关的教程,但是各有各的说法,我结合我自己这个项目的需要,首先,项 ...
- 中文 bootstrapValidator
官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载 ...
- UVA 10881
题目就不再写了,直接开始 [分析]蚂蚁碰撞掉头,其实不用考虑掉头问题,直接让“掉头”等价于“对穿而过”, 然后调换它们的状态(感觉像是障眼法hhh),只要分清楚“谁是谁”.因为“掉头”,所以蚂蚁 的相 ...
- jmeter处理json(关联)
例:用户需要登录成功后才可进行充值,进行充值操作时需要获取登录成功返回的sign值,在jmeter中可以通过关联的方式进行处理. jmeter中json path插件的使用方法:http://www. ...
- ACM-ICPC 2018青岛网络赛-H题 Traveling on the Axis
题目:略(不知道怎么从ZOJ搬题) 地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4054 把这题的每个点分成两种情况 ...
- redis 3.0 集群__数据迁移和伸缩容
添加节点 1,启动2个新的redis-sever, 参照 ( redis 3.0 集群____安装 ),端口号为 7007 和 7008 2,使用命令 redis-trib.rb add-node 命 ...
- Git的一些用法
三. Git的一些用法 1. .gitignore文件 屏蔽文件 : .gitignore文件是告诉Git哪些目录或者文件需要忽略, 这些文件将不被提交; 常用场景 : 写完代码后会执行变异调试等操作 ...
- HTML-★★★★★表单★★★★★
表单 <form id="" name="" method="post/get" action="负责处理的服务端" ...
- C#-函数的传值与传址
传值就是将实参的值传到所调用的函数里面,实参的值并没有发生变化,默认传值的有int型,浮点型,bool型,char字符型,结构体等等. 传址就是将地址传到所调用的函数里面操作,实参的值也会跟着变化,传 ...