ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/AnywhereTS-MSSQL/trunk/AnywhereTS.Logging/Logging.cs
Revision: 165
Committed: Mon Jul 16 10:19:21 2012 UTC (10 years, 8 months ago) by william
File size: 4365 byte(s)
Log Message:

File Contents

# User Rev Content
1 william 36 using System;
2     using System.Collections.Generic;
3     using System.Text;
4     using log4net.Config;
5     using log4net;
6     using System.IO;
7 william 70 using log4net.Util;
8     using System.Reflection;
9     using System.Collections;
10 william 149 using System.Windows.Forms;
11     using log4net.Appender;
12     using System.Linq;
13 william 36
14     namespace AnywhereTS
15     {
16     public static class Logging
17     {
18     static Logging() { Logging.Initialize(); }
19 william 149 private static void Initialize()
20     {
21     string path = typeof(Logging).Assembly.Location.ToLower().Replace(@"\AnywhereTS.Logging.dll".ToLower(), "");
22     string config = string.Format(@"{0}\{1}", path, "AnywhereTS.Logging.dll.config");
23     //MessageBox.Show(config);
24     FileInfo fi = new FileInfo(config);
25 william 150 XmlConfigurator.Configure(fi);
26     Logging.SetLogPath(string.Format(@"{0}\logs", fi.FullName));
27 william 149 }
28    
29 william 36 #region Log access
30     public static readonly ILog ATSAdminLog = LogManager.GetLogger("AnywhereTS.ATSAmdin");
31 william 48 public static readonly ILog TSControlPanelLog = LogManager.GetLogger("AnywhereTS.TSControlPanel");
32 william 86 public static readonly ILog DatabaseLog = LogManager.GetLogger("AnywhereTS.DBSupport");
33 william 147
34 william 150 public static readonly ILog ATSAdminInstallerLog = LogManager.GetLogger("AnywhereTS.ATSAmdin.Installer");
35     public static readonly ILog TSControlPanelInstallerLog = LogManager.GetLogger("AnywhereTS.TSControlPanel.Installer");
36 william 165
37     public static readonly ILog WizardLog = LogManager.GetLogger("AnywhereTS.Wizard");
38     public static readonly ILog DefaultLog = LogManager.GetLogger("AnywhereTS.DefaultLogger");
39    
40 william 36 #endregion
41 william 70
42 william 165 public static void UpdateLogPath()
43     {
44     string path = typeof(Logging).Assembly.Location.ToLower().Replace(@"\AnywhereTS.Logging.dll".ToLower(), "");
45     Logging.UpdateLogPath(path);
46     }
47 william 150 public static void UpdateLogPath(string path) { Logging.SetLogPath(path); }
48    
49     private static void SetLogPath(string path)
50 william 149 {
51     var fileAppenders = from appender in log4net.LogManager.GetRepository().GetAppenders()
52     where appender is FileAppender
53     select appender;
54     fileAppenders.Cast<FileAppender>()
55     .ToList()
56     .ForEach(
57     fa =>
58     {
59     FileInfo fi = new FileInfo(fa.File);
60     string file = fi.Name;
61     fa.File = new FileInfo(string.Format(@"{0}\{1}", path, file)).FullName;
62     fa.ActivateOptions();
63     }
64     );
65     }
66 william 150
67 william 70 #region log4net help
68     public static List<string> GetMessagesFromThreadContextStack(string RawContextStack)
69     {
70     try
71     {
72     ThreadContextStack tc = ThreadContext.Stacks[RawContextStack.ToUpper()];
73     if (tc == null) { return new List<string>(); }
74     else { return GetMessagesFromThreadContextStack(tc); }
75     }
76 william 71 catch { return new List<string>(); }
77 william 70 }
78     public static List<string> GetMessagesFromThreadContextStack(ThreadContextStack rawTCS)
79     {
80 william 71 Type t = typeof(ThreadContextStack);
81     //ConstructorInfo ci = t.GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[0], null);
82     //ThreadContextStack tmpRawTCS = null;
83     //tmpRawTCS = (ThreadContextStack)ci.Invoke(null);
84     List<string> stObjects = new List<string>();
85     ThreadContextStack context = (rawTCS as ThreadContextStack);
86     for (int i = 0; i < context.Count; i++)
87     {
88     MethodInfo mi = t.GetMethod("GetFullMessage", BindingFlags.NonPublic | BindingFlags.Instance);
89     string message = mi.Invoke(context, null).ToString();
90     stObjects.Add(message);
91     context.Pop();
92     }
93     stObjects.Reverse();
94     rawTCS.Clear();
95     // push the popped Context message back onto the original ContextStack
96     foreach (string stObject in stObjects) { rawTCS.Push(stObject); }
97     return stObjects;
98 william 70 }
99     #endregion
100 william 36 }
101     }