public static JsonSerializableException Create(Exception ex) { if (ex == null) { return(null); } var serializable = new JsonSerializableException { Type = ex.GetType().FullName, Message = ex.Message, HelpLink = ex.HelpLink, Source = ex.Source, #if NET45 HResult = ex.HResult, #endif StackTrace = ex.StackTrace, Data = ToStringDictionary(ex.Data) }; if (ex.InnerException != null) { serializable.InnerException = JsonSerializableException.Create(ex.InnerException); } return(serializable); }
static logEvent Create(LoggingEvent loggingEvent) { var logEvent = new logEvent { loggerName = loggingEvent.LoggerName, domain = loggingEvent.Domain, identity = loggingEvent.Identity, threadName = loggingEvent.ThreadName, userName = loggingEvent.UserName, timeStamp = loggingEvent.TimeStamp.ToUniversalTime().ToString("O"), exception = loggingEvent.ExceptionObject == null ? new object() : JsonSerializableException.Create(loggingEvent.ExceptionObject), message = loggingEvent.RenderedMessage, fix = loggingEvent.Fix.ToString(), hostName = Environment.MachineName, level = loggingEvent.Level == null ? null : loggingEvent.Level.DisplayName }; // Added special handling of the MessageObject since it may be an exception. // Exception Types require specialized serialization to prevent serialization exceptions. if (loggingEvent.MessageObject != null && loggingEvent.MessageObject.GetType() != typeof(string)) { if (loggingEvent.MessageObject is Exception) { logEvent.messageObject = JsonSerializableException.Create((Exception)loggingEvent.MessageObject); } else { logEvent.messageObject = loggingEvent.MessageObject; } } else { logEvent.messageObject = new object(); } if (loggingEvent.LocationInformation != null) { logEvent.className = loggingEvent.LocationInformation.ClassName; logEvent.fileName = loggingEvent.LocationInformation.FileName; logEvent.lineNumber = loggingEvent.LocationInformation.LineNumber; logEvent.fullInfo = loggingEvent.LocationInformation.FullInfo; logEvent.methodName = loggingEvent.LocationInformation.MethodName; } AddProperties(loggingEvent, logEvent); return(logEvent); }
public static JsonSerializableException Create(Exception ex) { if (ex == null) return null; var serializable = new JsonSerializableException { Type = ex.GetType().FullName, Message = ex.Message, HelpLink = ex.HelpLink, Source = ex.Source, #if NET45 HResult = ex.HResult, #endif StackTrace = ex.StackTrace, Data = ex.Data }; if (ex.InnerException != null) { serializable.InnerException = JsonSerializableException.Create(ex.InnerException); } return serializable; }
static logEvent Create(LoggingEvent loggingEvent) { var logEvent = new logEvent { //loggerName = loggingEvent.LoggerName, domain = loggingEvent.Domain, //identity = loggingEvent.Identity, threadName = loggingEvent.ThreadName, //userName = loggingEvent.UserName, timeStamp = loggingEvent.TimeStamp.ToUniversalTime().ToString("O"), exception = loggingEvent.ExceptionObject == null ? new object() : JsonSerializableException.Create(loggingEvent.ExceptionObject), message = loggingEvent.RenderedMessage, //fix = loggingEvent.Fix.ToString(), hostName = Environment.MachineName, level = loggingEvent.Level == null ? null : loggingEvent.Level.DisplayName.ToLower() }; #region 扩展 接口级日志 MangoLogEvent mangoLogEvent = null; try { if (loggingEvent.MessageObject != null) { if (loggingEvent.MessageObject.GetType() == typeof(string)) { mangoLogEvent = Newtonsoft.Json.JsonConvert.DeserializeObject <MangoLogEvent>(loggingEvent.MessageObject.ToString()); } else { mangoLogEvent = Newtonsoft.Json.JsonConvert.DeserializeObject <MangoLogEvent>(loggingEvent.MessageObject.ToJson()); } if (mangoLogEvent != null) { logEvent.ltctraid = mangoLogEvent.uuid; logEvent.module = mangoLogEvent.module; logEvent.uuidtag = mangoLogEvent.uuidtag; logEvent.message = mangoLogEvent.message; logEvent.request = mangoLogEvent.request; logEvent.response = mangoLogEvent.response; if (mangoLogEvent.otherMsg.Count > 0) { logEvent.otherMsg = mangoLogEvent.otherMsg; } else { logEvent.otherMsg = new Dictionary <string, string>(); } //类信息 //logEvent.className = mangoLogEvent.className; //logEvent.fileName = mangoLogEvent.fileName; //logEvent.lineNumber = mangoLogEvent.lineNumber.ToString(); //logEvent.methodName = mangoLogEvent.methodName; logEvent.fullInfo = mangoLogEvent.fullInfo; //上下文信息 if (!string.IsNullOrEmpty(mangoLogEvent.SERVER_PORT)) { var ipParam = mangoLogEvent.LOCAL_ADDR.Split('.'); logEvent.hostId = mangoLogEvent.HTTP_HOST; if (ipParam.Length == 4) { //logEvent.hostId = ipParam[3] + "-" + mangoLogEvent.SERVER_PORT; logEvent.hostId = mangoLogEvent.LOCAL_ADDR + ":" + mangoLogEvent.SERVER_PORT; } } if (!string.IsNullOrEmpty(mangoLogEvent.SERVER_NAME)) { logEvent.domain = mangoLogEvent.SERVER_NAME; } //项目名 logEvent.project = logEvent.hostId; if (!string.IsNullOrEmpty(mangoLogEvent.Appl_Physical_Path)) { var appl_Path_Param = mangoLogEvent.Appl_Physical_Path.Split('\\'); if (appl_Path_Param.Length < 2) { appl_Path_Param = mangoLogEvent.Appl_Physical_Path.Split('/'); if (appl_Path_Param.Length > 3) { logEvent.project = appl_Path_Param[3]; } } else if (appl_Path_Param.Length > 3) { logEvent.project = appl_Path_Param[2]; } } } } } catch (Exception ex) { throw ex; } #endregion 扩展 接口级日志 //if (loggingEvent.LocationInformation != null) //扩展 新增了判断条件 if (string.IsNullOrEmpty(logEvent.fullInfo) && loggingEvent.LocationInformation != null) { //logEvent.className = loggingEvent.LocationInformation.ClassName; //logEvent.fileName = loggingEvent.LocationInformation.FileName; //logEvent.lineNumber = loggingEvent.LocationInformation.LineNumber; logEvent.fullInfo = loggingEvent.LocationInformation.FullInfo; //logEvent.methodName = loggingEvent.LocationInformation.MethodName; } AddProperties(loggingEvent, logEvent); //throw new Exception("终止提交ES"); return(logEvent); }