using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Runtime.Serialization; using System.Text; namespace LiveLogger4Log4Net { [DataContract] public class LogMessage { [DataMember] public String Message { get; set; } [DataMember] public List StackSteps { get; set; } public LogMessage() { StackSteps = new List(); StackTrace trace = new StackTrace(true); var interestingFrames = from StackFrame frame in trace.GetFrames() where frame.GetMethod().DeclaringType.Assembly.GetName().Name != "LiveLogger4Log4Net" && frame.GetMethod().DeclaringType.Assembly.GetName().Name != "log4net" && frame.GetFileLineNumber() != 0 select new StackStep() { SourceFile = frame.GetFileName(), LineNumber = frame.GetFileLineNumber() }; StackSteps.AddRange(interestingFrames); } } [DataContract] public class StackStep { [DataMember] public String SourceFile { get; set; } [DataMember] public Int32 LineNumber { get; set; } } }