private static MemoryStream MessageToXmlString(MessageInfo messageInfo) { using (var memoryStream = new MemoryStream()) { var xs = new XmlSerializer(typeof (MessageInfo)); var settings = new XmlWriterSettings() {OmitXmlDeclaration = true, Encoding = Encoding.UTF8}; using (var xmlTextWriter = XmlWriter.Create(memoryStream, settings)) { xs.Serialize(xmlTextWriter, messageInfo); return memoryStream; } } }
protected void WriteMessage(object message, Exception ex, Level level, bool isCommandText) { var messageInfo = new MessageInfo() { Level = level.Name, Message = message.ToString(), Date = DateTime.Now }; if (ex != null) { messageInfo.Exception = new MessageInfoException() { ErrorMessage = ex.Message, Source = ex.Source, StackTrace = ex.StackTrace }; } if (isCommandText && ((this.commandsProcessedCount < this.countOfCommands) || (this.countOfCommands <= 0))) { double a = (++this.commandsProcessedCount * 100.0) / ((this.countOfCommands == 0) ? ((double)1) : ((double)this.countOfCommands)); messageInfo.Progress = new MessageInfoProgress() { Percentage = Math.Round(a), Processed = commandsProcessedCount, TotalToProcess = countOfCommands }; log.Info($"Progress: ({ messageInfo.Progress.Processed}/{ messageInfo.Progress.TotalToProcess} - { messageInfo.Progress.Percentage}%)"); } else { if (level == Level.FATAL) log.Fatal(message, ex); else if (level == Level.ERROR) log.Error(message, ex); else if (level == Level.DEBUG) log.Debug(message); else log.Info(message); } var memoryStream = MessageToXmlString(messageInfo); HttpContext.Current.Response.Write(Utf8ByteArrayToString(memoryStream.ToArray())); HttpContext.Current.Response.Flush(); }