public static string HandlerLogMeg(LogPdbJson lpj, List <string> argAry) { string debuLogStr = ""; if (lpj != null) { debuLogStr = string.Format(@"ID:{0}---{1}:{2}($)({3}){4}{5}", lpj.ID, lpj.ClassName, lpj.FuncName, lpj.Comments, "\r\n", lpj.SubPath); if (argAry == null || argAry.Count == 0) { //替换参数值 debuLogStr = debuLogStr.Replace("$", ""); } else { int argCount = argAry.Count; if (argCount == 1) { debuLogStr = debuLogStr.Replace("$", argAry[0]); } else { System.Text.StringBuilder sb = new System.Text.StringBuilder(); for (int i = 0; i < argCount; i++) { sb.AppendFormat("{0},", argAry[i]); } //移除最后一逗号 sb = sb.Remove(sb.Length - 1, 1); debuLogStr = debuLogStr.Replace("$", sb.ToString()); } } } return(debuLogStr); }
/* * /// <summary> * /// 每条日志参数个数 * /// </summary> * /// <param name="_id"></param> * /// <returns></returns> * public static int GetArgCount(LogPdbJson lpj) * { * int argCount = 0; * if (lpj!=null) * { * argCount = lpj.ArgCount; * } * return argCount; * } * * /// <summary> * /// 日志格式处理(对象和参数) * /// </summary> * /// <param name="lpj">每条日志数据结构体</param> * /// <param name="argAry">每条日志的参数列表</param> * /// <returns></returns> * public static string HandlerLogMeg(LogPdbJson lpj,List<int> argAry) * { * string debuLogStr = ""; * if (lpj != null) * { * debuLogStr = string.Format(@"ID:{0}---{1}($)(#){2}{3}:{4}", lpj.ID, lpj.Comments, "\r\n",lpj.SubPath, lpj.LineIndex); * if (argAry == null||argAry.Count==0) * { * //替换参数值 * debuLogStr = debuLogStr.Replace("$", ""); * //替换参数类型 * debuLogStr = debuLogStr.Replace("#", ""); * } * else * { * int argCount = argAry.Count; * if (argCount == 1) * { * debuLogStr = debuLogStr.Replace("$", argAry[0].ToString()); * debuLogStr = debuLogStr.Replace("#", lpj.ArgType.Remove(lpj.ArgType.Length - 1, 1)); * * } * else * { * System.Text.StringBuilder sb = new System.Text.StringBuilder(); * for (int i = 0; i < argCount; i++) * { * sb.AppendFormat("{0},",argAry[i]); * } * //移除最后一逗号 * sb= sb.Remove(sb.Length - 1, 1); * debuLogStr = debuLogStr.Replace("$", sb.ToString()); * //处理参数类型 * debuLogStr = debuLogStr.Replace("#", lpj.ArgType.Replace("&", ",").Remove(lpj.ArgType.Length - 1, 1)); * } * if (debuLogStr.IndexOf('&')!=-1) * { * debuLogStr = debuLogStr.Replace("&", ","); * } * } * } * return debuLogStr; * } * * /// <summary> * /// 日志格式处理(对象) * /// </summary> * /// <param name="lpj">每条日志数据结构体</param> * /// <param name="argAry">每条日志的参数列表</param> * /// <returns></returns> * public static string HandlerLogMeg(LogPdbJson lpj) * { * string debuLogStr = ""; * if (lpj != null) * { * debuLogStr = string.Format(@"ID:{0}---{1}($){2}{3}:{4}", lpj.ID, lpj.Comments, "\r\n", lpj.SubPath, lpj.LineIndex); * if (lpj.ArgCount == 0) * { * debuLogStr = debuLogStr.Replace("$", ""); * } * else * { * int argCount = lpj.ArgCount; * if (argCount == 1) * { * //移除最后一个& * debuLogStr = debuLogStr.Replace("$", lpj.ArgType.Remove(lpj.ArgType.Length - 1, 1)); * } * else * { * System.Text.StringBuilder sb = new System.Text.StringBuilder(); * sb.Append(lpj.ArgType.Replace("&", ",").Remove(lpj.ArgType.Length - 1, 1)); * debuLogStr = debuLogStr.Replace("$", sb.ToString()); * } * } * } * return debuLogStr; * } */ /* * /// <summary> * ///可读性日志数据输出(Id和frame数组) * /// </summary> * /// <param name="idAry">日志id数组</param> * /// <param name="argAry">参数列表数组</param> * /// <returns></returns> * public static string OutputAllMes(Dictionary<int,List<int>> frameAndIdDic,string path) * { * string str = null; * if (frameAndIdDic!=null&&frameAndIdDic.Count!=0) * { * System.Text.StringBuilder sbAll = new System.Text.StringBuilder(); * //遍历每一帧 * foreach (var item in frameAndIdDic) * { * int frameindex = item.Key; * List<int> idList = new List<int>(); * idList.AddRange(item.Value); * int idLength = idList.Count; * //遍历每一个id * System.Text.StringBuilder sbFrame = new System.Text.StringBuilder(); * for (int i = 0; i < idLength; i++) * { * //获取指定日志数据对象 * LogPdbJson lpj = GetItemData(idList[i], path); * string logDataStr = HandlerLogMeg(lpj); * sbFrame.AppendFormat("{0}{1}{2}",logDataStr,"\r\n","\r\n"); * } * sbAll.AppendFormat("********FrameIndex:{0}---Time:{1}********{2}{3}{4}{5}", frameindex, System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "\r\n", sbFrame,"\r\n","\r\n"); * } * str = sbAll.ToString(); * //清空之前解析LogPdb存放的数据 * jsHandler.allData.Clear(); * } * return str; * } * * /// <summary> * /// 可读性日志数据输出(Id和Frame、Args) * /// </summary> * /// <param name="frameAndIdDic">存放Frame-ID序列的字典</param> * /// <param name="argsList">参数列表</param> * /// <param name="path">LogPdb映射表路径</param> * /// <returns></returns> * public static string OutputAllMes(Dictionary<int, List<int>> frameAndIdDic, List<int> argsList, string path) * { * string str = null; * if (frameAndIdDic != null && argsList != null) * { * System.Text.StringBuilder sbAll = new System.Text.StringBuilder(); * //遍历每一帧 * foreach (var item in frameAndIdDic) * { * int frameindex = item.Key; * List<int> idList = new List<int>(); * idList.AddRange(item.Value); * int idLength = idList.Count; * //遍历每一个id * System.Text.StringBuilder sbFrame = new System.Text.StringBuilder(); * //用于记录参数遍历的当前位置 * int curindex = 0; * for (int i = 0; i < idLength; i++) * { * //获取指定日志数据对象 * LogPdbJson lpj = GetItemData(idList[i], path); * //获取参数个数 * int argCnt = lpj.ArgCount; * //存储每一个函数ID对应的参数列表 * List<int> argsListById = new List<int>(); * //每次从上次记录的位置开始遍历 * int j = curindex; * for (; j<curindex+ argCnt; j++) * { * argsListById.Add(argsList[j]); * } * //更新遍历的位置 * curindex = j; * //输出每条日志信息 * string logDataStr = HandlerLogMeg(lpj, argsListById); * sbFrame.AppendFormat("{0}{1}{2}", logDataStr, "\r\n", "\r\n"); * } * sbAll.AppendFormat("********FrameIndex:{0}---Time:{1}********{2}{3}{4}{5}", frameindex, System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "\r\n", sbFrame, "\r\n", "\r\n"); * } * str = sbAll.ToString(); * //清空之前解析LogPdb存放的数据 * jsHandler.allData.Clear(); * } * return str; * } * * /// <summary> * /// 可读性日志数据输出(Id和Frame、Args) * /// </summary> * /// <param name="frameAndIdDic"></param> * /// <param name="argsList"></param> * /// <param name="path"></param> * /// <returns></returns> * public static string OutputAllMes(Dictionary<int, List<ushort>> frameAndIdDic, List<int> argsList, string path) * { * string str = null; * if (frameAndIdDic != null && argsList != null) * { * System.Text.StringBuilder sbAll = new System.Text.StringBuilder(); * //遍历每一帧 * foreach (var item in frameAndIdDic) * { * int frameindex = item.Key; * List<ushort> idList = new List<ushort>(); * idList.AddRange(item.Value); * int idLength = idList.Count; * //遍历每一个id * System.Text.StringBuilder sbFrame = new System.Text.StringBuilder(); * //用于记录参数遍历的当前位置 * int curindex = 0; * for (int i = 0; i < idLength; i++) * { * //获取指定日志数据对象 * LogPdbJson lpj = GetItemData(idList[i], path); * //获取参数个数 * int argCnt = lpj.ArgCount; * //存储每一个函数ID对应的参数列表 * List<int> argsListById = new List<int>(); * //每次从上次记录的位置开始遍历 * int j = curindex; * for (; j < curindex + argCnt; j++) * { * argsListById.Add(argsList[j]); * } * //更新遍历的位置 * curindex = j; * //输出每条日志信息 * string logDataStr = HandlerLogMeg(lpj, argsListById); * sbFrame.AppendFormat("{0}{1}{2}", logDataStr, "\r\n", "\r\n"); * } * sbAll.AppendFormat("********FrameIndex:{0}---Time:{1}********{2}{3}{4}{5}", frameindex, System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "\r\n", sbFrame, "\r\n", "\r\n"); * } * str = sbAll.ToString(); * //清空之前解析LogPdb存放的数据 * jsHandler.allData.Clear(); * } * return str; * } * /* * /// <summary> * ///可读性日志数据输出(Id) * /// </summary> * /// <param name="idAry">日志id数组</param> * /// <param name="argAry">参数列表数组</param> * /// <returns></returns> * public static string OutputAllMes( List<int> idAry,string LogPdbPath) * { * string str = null; * if (idAry != null) * { * int idLength = idAry.Count; * //遍历每一个id * System.Text.StringBuilder sb = new System.Text.StringBuilder(); * for (int i = 0; i < idLength; i++) * { * //获取指定日志数据对象 * LogPdbJson lpj = GetItemData(idAry[i], LogPdbPath); * //返回一条数据 * string logDataStr = HandlerLogMeg(lpj); * Debug.Log(logDataStr); * sb.AppendFormat("{0}{1}{2}", logDataStr, "\r\n", "\r\n"); * } * * str = sb.ToString(); * } * //清空之前解析LogPdb存放的数据 * jsHandler = null; * return str; * } */ public static string OutputAllMes(List <LogTrackFunc> list, string logPdbPath) { string str = null; if (list != null && list.Count != 0) { int cnt = list.Count; System.Text.StringBuilder sb = new System.Text.StringBuilder(); for (int i = 0; i < cnt; i++) { //获取LogPdb表的日志对象 LogPdbJson lpj = GetItemData(list[i].ID, logPdbPath); //输出每条日志信息 string logDataStr = HandlerLogMeg(lpj, list[i].Args); sb.AppendFormat("{0}{1}{2}", logDataStr, "\r\n", "\r\n"); } str = sb.ToString(); } //清空之前解析LogPdb存放的数据 jsHandler.allData.Clear(); return(str); }