You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
using Apewer.Internals; using System; using System.Collections.Generic; using System.Text; using System.Threading;
namespace Apewer {
/// <summary>日志记录程序。</summary>
public class Logger {
private string _key = Guid.NewGuid().ToString("n"); private string _target = ""; private bool _enabled = true;
/// <summary>异常。</summary>
public event Event<Exception> ExceptionEvent;
/// <summary>调试。</summary>
public event Event<string> DebugEvent;
/// <summary>文本。</summary>
public event Event<string> TextEvent;
/// <summary>信息。</summary>
public event Event<string> InfomationEvent;
/// <summary>注意。</summary>
public event Event<string> WarningEvent;
/// <summary>错误。</summary>
public event Event<string> ErrorEvent;
/// <summary>自定义。</summary>
public event Event<object> CustomEvent;
/// <summary>已启用。</summary>
public bool Enabled { get { return _enabled; } set { _enabled = value; } }
/// <summary>唯一标识。</summary>
public string Key { get { return _key; } }
/// <summary>目标。</summary>
public string Target { get { return _target; } protected set { _target = value ?? ""; } }
internal void Invoke(LogItem item) { if (item == null) return; switch (item.Type) { case LogType.Debug: if (DebugEvent != null) DebugEvent(this, item.Content); break; case LogType.Text: if (TextEvent != null) TextEvent(this, item.Content); break; case LogType.Infomation: if (InfomationEvent != null) InfomationEvent(this, item.Content); break; case LogType.Warning: if (WarningEvent != null) WarningEvent(this, item.Content); break; case LogType.Error: if (ErrorEvent != null) ErrorEvent(this, item.Content); break; case LogType.Exception: if (ExceptionEvent != null) ExceptionEvent(this, item.Exception); break; case LogType.Custom: if (CustomEvent != null) CustomEvent(this, item.Custom); break; } }
/// <summary>异常。</summary>
public void Exception(Exception value) { if (value == null) return; var item = new LogItem(LogType.Exception); item.Logger = this; item.Target = _target; try { item.Content = value.ToString(); } catch { } }
/// <summary>自定义。</summary>
public void Custom(object value) { if (value == null) return; var item = new LogItem(LogType.Custom); item.Logger = this; item.Target = _target; item.Custom = value; }
/// <summary>调试。</summary>
public void Debug(string value) { if (value == null) return; var item = new LogItem(LogType.Debug); item.Logger = this; item.Target = _target; item.Content = value; }
/// <summary>文本。</summary>
public void Text(string value) { if (value == null) return; var item = new LogItem(LogType.Text); item.Logger = this; item.Target = _target; item.Content = value; }
/// <summary>信息。</summary>
public void Infomation(string value) { if (value == null) return; var item = new LogItem(LogType.Infomation); item.Logger = this; item.Target = _target; item.Content = value; }
/// <summary>注意。</summary>
public void Warning(string value) { if (value == null) return; var item = new LogItem(LogType.Warning); item.Logger = this; item.Target = _target; item.Content = value; }
/// <summary>错误。</summary>
public void Error(string value) { if (value == null) return; var item = new LogItem(LogType.Error); item.Logger = this; item.Target = _target; item.Content = value; }
private Logger(string target) { _target = target ?? ""; }
private static Event<Exception> ExceptionDefaultCallback = null; private static Event<object> CustomDefaultCallback = null; private static Event<string> DebugDefaultCallback = null; private static Event<string> TextDefaultCallback = null; private static Event<string> InfomationDefaultCallback = null; private static Event<string> WarningDefaultCallback = null; private static Event<string> ErrorDefaultCallback = null;
private static void Logger_ExceptionEvent(object sender, Exception value) { if (ExceptionDefaultCallback != null) ExceptionDefaultCallback(sender, value); }
private static void Logger_CustomEvent(object sender, object value) { if (ExceptionDefaultCallback != null) CustomDefaultCallback(sender, value); }
private static void Logger_DebugEvent(object sender, string value) { if (ExceptionDefaultCallback != null) DebugDefaultCallback(sender, value); }
private static void Logger_TextEvent(object sender, string value) { throw new NotImplementedException(); }
private static void Logger_InfomationEvent(object sender, string value) { throw new NotImplementedException(); }
private static void Logger_WarningEvent(object sender, string value) { throw new NotImplementedException(); }
private static void Logger_ErrorEvent(object sender, string value) {
}
private Logger(Type target) { try { if (target != null) { _target = target.FullName; } } catch { } }
private Logger(object target) { try { if (target != null) { _target = target.GetType().FullName; } } catch { } }
/// <summary>默认的日志记录程序。</summary>
public static Logger Default(object target) { var logger = new Logger(target); logger.CustomEvent += Logger_CustomEvent; logger.ExceptionEvent += Logger_ExceptionEvent; logger.DebugEvent += Logger_DebugEvent; logger.TextEvent += Logger_TextEvent; logger.InfomationEvent += Logger_InfomationEvent; logger.WarningEvent += Logger_WarningEvent; logger.ErrorEvent += Logger_ErrorEvent; return logger; }
}
}
|