using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace BlubbFish.Utils { abstract public class OwnObject { private List> loglist = new List>(); public delegate void LogEvent(string location, string message, LogLevel level, DateTime date); public enum LogLevel : int { Debug = 1, Notice = 2, Info = 4, Warn = 8, Error = 16 } public event LogEvent eventDebug; public event LogEvent eventNotice; public event LogEvent eventInfo; public event LogEvent eventWarn; public event LogEvent eventError; public event LogEvent EventLog; /// /// Get the Complete Log /// public List getLog(LogLevel level, bool classNames, bool timeStamps) { List ret = new List(); foreach(Tuple t in this.loglist) { if(t.Item4 >= level) { ret.Add(logToString(t.Item2, t.Item3, t.Item4, t.Item1, classNames, timeStamps)); } } return ret; } /// /// Formates a LogMessage to a String /// public static string logToString(string location, string message, LogLevel level, DateTime date, bool classNames, bool timeStamps) { return (timeStamps ? "[" + date.ToString("R") + "]: "+level.ToString()+" " : "") + (classNames ? location + ", " : "") + message; } protected void addLog(string location, string message, LogLevel level) { this.addLog(location, message, level, DateTime.Now); } protected void addLog(string location, string message, LogLevel level, DateTime date) { if(eventDebug != null && level >= LogLevel.Debug) { eventDebug(location, message, level, date); } if(eventNotice != null && level >= LogLevel.Notice) { eventNotice(location, message, level, date); } if(eventInfo != null && level >= LogLevel.Info) { eventInfo(location, message, level, date); } if(eventWarn != null && level >= LogLevel.Warn) { eventWarn(location, message, level, date); } if(eventError != null && level >= LogLevel.Error) { eventError(location, message, level, date); } if(EventLog != null) { EventLog(location, message, level, date); } this.loglist.Add(new Tuple(date, location, message, level)); } } }