| | |
| | | using System.IO; |
| | | using System.Threading; |
| | | |
| | | public class RunTimeExceptionUtility : Singleton<RunTimeExceptionUtility> |
| | | { |
| | | |
| | | List<string> logWriteToFileTemp = new List<string>(); |
| | | DateTime nextWriteFileTime = DateTime.Now; |
| | | public class RunTimeExceptionUtility : Singleton<RunTimeExceptionUtility>
|
| | | {
|
| | |
|
| | | List<string> logWriteToFileTemp = new List<string>();
|
| | | DateTime nextWriteFileTime = DateTime.Now;
|
| | | string logFileRoot = string.Empty; |
| | | |
| | | public void Init() |
| | | { |
| | | GlobalTimeEvent.Instance.secondEvent -= OnPerSecond; |
| | | Application.logMessageReceivedThreaded -= AddLogRenderer; |
| | | |
| | | if (!DebugUtility.Instance.debugAccount) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | if (Application.platform == RuntimePlatform.Android) |
| | | { |
| | | logFileRoot = Path.GetDirectoryName(Application.persistentDataPath); |
| | | } |
| | | else if (Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.OSXEditor) |
| | | { |
| | | logFileRoot = Path.GetDirectoryName(Application.dataPath) + "/RunTimeLog"; |
| | | } |
| | | else |
| | | { |
| | | return; |
| | | } |
| | | |
| | | nextWriteFileTime = DateTime.Now + new TimeSpan(300 * TimeSpan.TicksPerSecond); |
| | | |
| | | GlobalTimeEvent.Instance.secondEvent += OnPerSecond; |
| | | Application.logMessageReceivedThreaded += AddLogRenderer; |
| | | public void Init()
|
| | | {
|
| | | GlobalTimeEvent.Instance.secondEvent -= OnPerSecond;
|
| | | Application.logMessageReceivedThreaded -= AddLogRenderer;
|
| | |
|
| | | if (!DebugUtility.Instance.debugAccount)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | if (Application.platform == RuntimePlatform.Android)
|
| | | {
|
| | | logFileRoot = Path.GetDirectoryName(Application.persistentDataPath);
|
| | | }
|
| | | else if (Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.OSXEditor)
|
| | | {
|
| | | logFileRoot = Path.GetDirectoryName(Application.dataPath) + "/RunTimeLog";
|
| | | }
|
| | | else
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | nextWriteFileTime = DateTime.Now + new TimeSpan(300 * TimeSpan.TicksPerSecond);
|
| | |
|
| | | GlobalTimeEvent.Instance.secondEvent += OnPerSecond;
|
| | | Application.logMessageReceivedThreaded += AddLogRenderer;
|
| | | } |
| | | |
| | | public void UnInit() |
| | | { |
| | | GlobalTimeEvent.Instance.secondEvent -= OnPerSecond; |
| | | Application.logMessageReceivedThreaded -= AddLogRenderer; |
| | | public void UnInit()
|
| | | {
|
| | | GlobalTimeEvent.Instance.secondEvent -= OnPerSecond;
|
| | | Application.logMessageReceivedThreaded -= AddLogRenderer;
|
| | | } |
| | | |
| | | private void AddLogRenderer(string _log, string _callStack, LogType _type) |
| | | { |
| | | logWriteToFileTemp.Add(string.Format("{0}--{1}:Thread:{2}-{3};{4}{5}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), _type, Thread.CurrentThread.ManagedThreadId, _log, _callStack, "\r\n")); |
| | | private void AddLogRenderer(string _log, string _callStack, LogType _type)
|
| | | {
|
| | | logWriteToFileTemp.Add(string.Format("{0}--{1}:Thread:{2}-{3};{4}{5}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), _type, Thread.CurrentThread.ManagedThreadId, _log, _callStack, "\r\n"));
|
| | | } |
| | | |
| | | private void OnPerSecond() |
| | | { |
| | | if (DateTime.Now > nextWriteFileTime) |
| | | { |
| | | nextWriteFileTime = DateTime.Now + new TimeSpan(300 * TimeSpan.TicksPerSecond); |
| | | if (logWriteToFileTemp.Count > 0) |
| | | { |
| | | if (!Directory.Exists(logFileRoot)) |
| | | { |
| | | Directory.CreateDirectory(logFileRoot); |
| | | } |
| | | var path = logFileRoot + "/" + "RunTimeLog_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm") + ".txt"; |
| | | File.WriteAllLines(path, logWriteToFileTemp.ToArray()); |
| | | logWriteToFileTemp.Clear(); |
| | | } |
| | | } |
| | | private void OnPerSecond()
|
| | | {
|
| | | if (DateTime.Now > nextWriteFileTime)
|
| | | {
|
| | | nextWriteFileTime = DateTime.Now + new TimeSpan(300 * TimeSpan.TicksPerSecond);
|
| | | if (logWriteToFileTemp.Count > 0)
|
| | | {
|
| | | if (!Directory.Exists(logFileRoot))
|
| | | {
|
| | | Directory.CreateDirectory(logFileRoot);
|
| | | }
|
| | | var path = logFileRoot + "/" + "RunTimeLog_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm") + ".txt";
|
| | | File.WriteAllLines(path, logWriteToFileTemp.ToArray());
|
| | | logWriteToFileTemp.Clear();
|
| | | }
|
| | | }
|
| | | } |
| | | |
| | | |