--- trunk/AnywhereTS.Logging/Logging.cs 2012/07/12 14:32:21 48 +++ trunk/AnywhereTS.Logging/Logging.cs 2012/07/12 20:47:35 70 @@ -4,6 +4,9 @@ using log4net.Config; using log4net; using System.IO; +using log4net.Util; +using System.Reflection; +using System.Collections; namespace AnywhereTS { @@ -16,5 +19,35 @@ public static readonly ILog ATSAdminLog = LogManager.GetLogger("AnywhereTS.ATSAmdin"); public static readonly ILog TSControlPanelLog = LogManager.GetLogger("AnywhereTS.TSControlPanel"); #endregion + + #region log4net help + public static List GetMessagesFromThreadContextStack(string RawContextStack) + { + try + { + ThreadContextStack tc = ThreadContext.Stacks[RawContextStack.ToUpper()]; + if (tc == null) { return new List(); } + else { return GetMessagesFromThreadContextStack(tc); } + } + catch { return new List(); } + } + public static List GetMessagesFromThreadContextStack(ThreadContextStack rawTCS) + { + ThreadContextStack oldrawTCS = rawTCS; + List stack_objects = new List(); + + ThreadContextStack context = (rawTCS as ThreadContextStack); + for (int i = 0; i < context.Count; i++) + { + Type t = typeof(ThreadContextStack); + MethodInfo mi = t.GetMethod("GetFullMessage", BindingFlags.NonPublic | BindingFlags.Instance); + string message = mi.Invoke(context, null).ToString(); + stack_objects.Add(message); + context.Pop(); + } + rawTCS = oldrawTCS; + return stack_objects; + } + #endregion } }