/[projects]/dao/DaoMqPump2/DaoCommon/Logfile.cs
ViewVC logotype

Annotation of /dao/DaoMqPump2/DaoCommon/Logfile.cs

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2177 - (hide annotations) (download)
Mon May 19 19:51:47 2014 UTC (10 years ago) by torben
File size: 4189 byte(s)
Improved Logging
1 torben 2169 using System;
2     using System.Collections.Generic;
3     using System.Text;
4     using System.Globalization;
5     using System.IO;
6    
7     namespace DaoCommon
8     {
9     public enum LogfileType
10     {
11     LogTransactions,
12     LogEvents,
13     LogDiscarded
14     }
15    
16    
17    
18     public class Logfile : IDisposable
19     {
20 torben 2177 // Flag: Has Dispose already been called?
21     bool disposed = false; //IDisposable
22    
23     private LogfileType type;
24 torben 2169 private string name;
25     private String logDirectory;
26     private LinkedList<string> logEntries = new LinkedList<string>();
27    
28 torben 2177 StreamWriter realLogFile = null;
29 torben 2169
30 torben 2177 public Logfile(LogfileType type, string logname, string logDirectory)
31 torben 2169 {
32 torben 2177 this.type = type;
33 torben 2169 this.logDirectory = logDirectory;
34     this.name = logname;
35     }
36    
37     public static string getNowString()
38     {
39     DateTime now = DateTime.Now;
40    
41     return now.ToString("s");
42     }
43    
44    
45 torben 2177 public string getLogFilename()
46 torben 2169 {
47     return getLogFilename(type, logDirectory, name);
48     }
49    
50     public static string getLogFilename(LogfileType type, string logDirectory, string name)
51     {
52    
53     DateTime now = DateTime.Now;
54     string filename = logDirectory + "\\";
55    
56     //Find uge nr
57     DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
58     Calendar myCal = CultureInfo.InvariantCulture.Calendar;//System.Globalization
59     int week = myCal.GetWeekOfYear(now, dfi.CalendarWeekRule, dfi.FirstDayOfWeek);
60    
61     switch (type)
62     {
63     case LogfileType.LogEvents:
64     filename += "eventlog_";
65     break;
66    
67     case LogfileType.LogTransactions:
68     filename += "transactionlog_";
69     break;
70 torben 2177
71 torben 2169 case LogfileType.LogDiscarded:
72     filename += "discardedlog_";
73     break;
74     }
75    
76    
77     filename += name + "_" + now.Year.ToString("D4") + "_W" + week.ToString("D2") + ".log";
78    
79     return filename;
80     }
81    
82 torben 2177 private void checkAndOpenfile()
83     {
84     if (realLogFile != null)
85     return;
86 torben 2169
87 torben 2177 string filename = getLogFilename();
88    
89     realLogFile = new StreamWriter(filename, true);
90     }
91    
92     public void writeLogEntry(string msg)
93     {
94     checkAndOpenfile();
95    
96     realLogFile.WriteLine(getNowString() + " " + msg);
97     realLogFile.Flush();
98     }
99    
100    
101 torben 2169 public void addSingleLogEntry(string msg)
102     {
103     msg = Logfile.getNowString() + " " + msg;
104     lock (logEntries)
105     {
106     logEntries.AddFirst(msg);
107    
108     if (logEntries.Count > 20)
109     {
110     logEntries.RemoveLast();
111     }
112     }
113    
114 torben 2177 string filename = getLogFilename();
115 torben 2169 using (StreamWriter eventlog = new StreamWriter(filename, true))
116     {
117     eventlog.WriteLine(msg);
118     }
119 torben 2177
120     Console.WriteLine(msg);
121 torben 2169 }
122    
123     public string[] getLog()
124     {
125     lock (logEntries)
126     {
127     List<string> tmpEntries = new List<string>();
128     foreach (string s in logEntries)
129     {
130     tmpEntries.Add(s);
131     }
132     return tmpEntries.ToArray();
133     }
134     }
135    
136 torben 2177 public void Dispose()
137     {
138     if (disposed)
139     return;
140 torben 2169
141 torben 2177 try
142     {
143     if (realLogFile != null)
144     {
145     realLogFile.Close();
146     realLogFile.Dispose();
147     }
148     }
149     catch (Exception e)
150     {
151     Console.WriteLine("Error disposing logfile : ", e.Message);
152     }
153    
154    
155     // Free any unmanaged objects here.
156     //
157     disposed = true;
158     }
159    
160    
161    
162 torben 2169 }
163     }

  ViewVC Help
Powered by ViewVC 1.1.20