using System; using System.Collections.Generic; using System.Text; using System.Globalization; using System.IO; namespace DaoCommon { public enum LogfileType { LogTransactions, LogEvents, LogDiscarded } public class Logfile : IDisposable { private string name; private String logDirectory; private LinkedList logEntries = new LinkedList(); public Logfile(string logname, string logDirectory) { this.logDirectory = logDirectory; this.name = logname; } public void Dispose()// adasd { } public static string getNowString() { DateTime now = DateTime.Now; return now.ToString("s"); } public string getLogFilename(LogfileType type) { return getLogFilename(type, logDirectory, name); } public static string getLogFilename(LogfileType type, string logDirectory, string name) { DateTime now = DateTime.Now; string filename = logDirectory + "\\"; //Find uge nr DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo; Calendar myCal = CultureInfo.InvariantCulture.Calendar;//System.Globalization int week = myCal.GetWeekOfYear(now, dfi.CalendarWeekRule, dfi.FirstDayOfWeek); switch (type) { case LogfileType.LogEvents: filename += "eventlog_"; break; case LogfileType.LogTransactions: filename += "transactionlog_"; break; case LogfileType.LogDiscarded: filename += "discardedlog_"; break; } filename += name + "_" + now.Year.ToString("D4") + "_W" + week.ToString("D2") + ".log"; return filename; } public void addSingleLogEntry(string msg) { msg = Logfile.getNowString() + " " + msg; lock (logEntries) { logEntries.AddFirst(msg); if (logEntries.Count > 20) { logEntries.RemoveLast(); } } string filename = getLogFilename(LogfileType.LogEvents); using (StreamWriter eventlog = new StreamWriter(filename, true)) { eventlog.WriteLine(msg); } } public string[] getLog() { lock (logEntries) { List tmpEntries = new List(); foreach (string s in logEntries) { tmpEntries.Add(s); } return tmpEntries.ToArray(); } } } }