public void Log(string log, CsDLevel level, CsDComponent component) { if((int)_debugLevel[component] >= (int)level) { StackTrace stackTrace = new StackTrace(); var method = stackTrace.GetFrame(1).GetMethod(); var parentClass = method.ReflectedType; var parentNameSpace = parentClass.Namespace; string formattedLog = Mathf.Round(Time.realtimeSinceStartup * 1000)/1000 + " " + component.ToString() + " " + level.ToString() + " " + parentNameSpace + "/" + parentClass.Name + "/" + method.Name + ": " + log; //if log target is console log, just use debug.log //if is file, add the log line to the buffered log, and if it's larger than buffer size, write to file and //clear the buffer if(_logTarget == CsDLogTarget.Console || _logTarget == CsDLogTarget.Both) { if(level == CsDLevel.Error) { UnityEngine.Debug.LogAssertion(formattedLog); } else { UnityEngine.Debug.Log(formattedLog); } } if(_logTarget == CsDLogTarget.File || _logTarget == CsDLogTarget.Both) { _bufferedLog = _bufferedLog + formattedLog + "\r\n"; if(_bufferedLog.Length > _bufferSize) { LogBufferToFile(); } } } }
public static Dictionary <CsDComponent, CsDLevel> LoadDebugSetting(out CsDLogTarget logTarget) { string [] rawFile; try { rawFile = File.ReadAllLines(Application.dataPath + "/GameData/" + "Debugs.txt"); } catch (Exception e) { logTarget = CsDLogTarget.File; UnityEngine.Debug.LogError(e.Message); return(null); } Dictionary <string, object> data = CsDebug.ParseLines(rawFile); Dictionary <CsDComponent, CsDLevel> debugLevel = new Dictionary <CsDComponent, CsDLevel>(); //build the dictionary with default values CsDComponent [] components = (CsDComponent[])Enum.GetValues(typeof(CsDComponent)); foreach (CsDComponent component in components) { debugLevel.Add(component, CsDLevel.Default); } logTarget = (CsDLogTarget)System.Enum.Parse(typeof(CsDLogTarget), data["LogTarget"].ToString()); data.Remove("LogTarget"); foreach (KeyValuePair <string, object> line in data) { CsDComponent component = (CsDComponent)System.Enum.Parse(typeof(CsDComponent), line.Key); CsDLevel level = (CsDLevel)System.Enum.Parse(typeof(CsDLevel), line.Value.ToString()); debugLevel[component] = level; } return(debugLevel); }
public void Log(string log, CsDLevel level, CsDComponent component) { if ((int)_debugLevel[component] >= (int)level) { StackTrace stackTrace = new StackTrace(); var method = stackTrace.GetFrame(1).GetMethod(); var parentClass = method.ReflectedType; var parentNameSpace = parentClass.Namespace; string formattedLog = Mathf.Round(Time.realtimeSinceStartup * 1000) / 1000 + " " + component.ToString() + " " + level.ToString() + " " + parentNameSpace + "/" + parentClass.Name + "/" + method.Name + ": " + log; //if log target is console log, just use debug.log //if is file, add the log line to the buffered log, and if it's larger than buffer size, write to file and //clear the buffer if (_logTarget == CsDLogTarget.Console || _logTarget == CsDLogTarget.Both) { if (level == CsDLevel.Error) { UnityEngine.Debug.LogAssertion(formattedLog); } else { UnityEngine.Debug.Log(formattedLog); } } if (_logTarget == CsDLogTarget.File || _logTarget == CsDLogTarget.Both) { _bufferedLog = _bufferedLog + formattedLog + "\r\n"; if (_bufferedLog.Length > _bufferSize) { LogBufferToFile(); } } } }