using System; using System.Collections.Generic; using ICD.Common.Properties; using ICD.Common.Utils; namespace ICD.Common.Services.Logging { public enum eSeverity { Emergency = 0, Alert = 1, Critical = 2, Error = 3, Warning = 4, Notice = 5, Informational = 6, Debug = 7 } public interface ILoggerService { [PublicAPI] event EventHandler OnEntryAdded; [PublicAPI] event EventHandler OnSeverityLevelChanged; /// /// Gets and sets the severity level. /// [PublicAPI] eSeverity SeverityLevel { get; set; } /// /// Adds the log item. /// /// Log entry to add [PublicAPI] void AddEntry(LogItem item); /// /// Gets the log history. /// /// [PublicAPI] KeyValuePair[] GetHistory(); } /// /// Extension methods for ILoggerService. /// public static class LoggerServiceExtensions { /// /// Adds the log item with string formatting. /// /// /// Severity Code, 0 - 7 /// Message Text format string [PublicAPI] public static void AddEntry(this ILoggerService extends, eSeverity severity, string message) { LogItem item = new LogItem(severity, message); extends.AddEntry(item); } /// /// Adds the log item with string formatting. /// /// /// Severity Code, 0 - 7 /// Message Text format string /// objects to format into the string [PublicAPI] public static void AddEntry(this ILoggerService extends, eSeverity severity, string message, params object[] args) { extends.AddEntry(severity, string.Format(message, args)); } [PublicAPI] public static void AddEntry(this ILoggerService extends, eSeverity severity, Exception e, string message) { extends.AddEntry(severity, string.Format("{0}: {1}{2}{3}{2}{4}", e.GetType().Name, message, IcdEnvironment.NewLine, e.Message, e.StackTrace)); } [PublicAPI] public static void AddEntry(this ILoggerService extends, eSeverity severity, Exception e, string message, params object[] args) { extends.AddEntry(severity, e, string.Format(message, args)); } } }