123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- using System;
- namespace Wayne.Lib.Log
- {
- /// <summary>
- /// Internal class that implements a System.Diagnostics.TraceListener and forwards all
- /// write-requests to an embedded DebugLogger.
- /// </summary>
- internal class DotNetLog : System.Diagnostics.TraceListener, IIdentifiableEntity
- {
- #region Fields
- private DebugLogger debugLogger;
- private bool disposed;
- #endregion
- #region Construction
- /// <summary>
- /// Constructor.
- /// </summary>
- internal DotNetLog()
- {
- debugLogger = new DebugLogger(this, true);
- }
- /// <summary>
- /// Destructor.
- /// </summary>
- ~DotNetLog()
- {
- Dispose(false);
- }
- #endregion
- #region IDisposable Members
- /// <summary>
- /// Overrides the System.Diagnostics.TraceListener Dispose()-method.
- /// </summary>
- /// <param name="disposing"></param>
- protected override void Dispose(bool disposing)
- {
- base.Dispose(disposing);
- if (!disposed)
- {
- Deactivate();
- debugLogger.Dispose();
- debugLogger = null;
- disposed = true;
- }
- }
- #endregion
- #region IIdentifiableEntity Members
- public int Id
- {
- get { return IdentifiableEntity.NoId; }
- }
- public string EntityType
- {
- get { return "DotNetLog"; }
- }
- /// <summary>
- /// This is used by the logger and should never be set by inheriting classes
- /// </summary>
- public string FullEntityName { get; set; }
- public string EntitySubType
- {
- get { return ""; }
- }
- public IIdentifiableEntity ParentEntity
- {
- get { return null; }
- }
- #endregion
- #region Methods: Activate / Deactivate
- /// <summary>
- /// Checks whether the dotnet debug listener should be activated.
- /// </summary>
- internal void CheckActive()
- {
- //if (debugLogger.IsActive())
- //{
- // // Register myself as a debug listener in the framework.
- // if (!System.Diagnostics.Debug.Listeners.Contains(this))
- // System.Diagnostics.Debug.Listeners.Add(this);
- //}
- //else
- //{
- // // Deregister myself as a debug listener in the framework.
- // if (System.Diagnostics.Debug.Listeners.Contains(this))
- // System.Diagnostics.Debug.Listeners.Remove(this);
- //}
- }
- /// <summary>
- /// Deactivates the dotnet debug listener.
- /// </summary>
- internal void Deactivate()
- {
- // Deregister myself as a debug listener in the framework.
- //if (System.Diagnostics.Debug.Listeners.Contains(this))
- // System.Diagnostics.Debug.Listeners.Remove(this);
- }
- #endregion
- #region Methods: Overrides of the System.Diagnostics.TraceListener
- public override void Write(string message)
- {
- WriteLine(message);
- }
- public override void WriteLine(string message)
- {
- try
- {
- if (!disposed && debugLogger.IsActive())
- debugLogger.Add(message);
- }
- catch (ObjectDisposedException) { }
- }
- public override void Write(string message, string category)
- {
- WriteLine(message, category);
- }
- public override void WriteLine(string message, string category)
- {
- try
- {
- if (!disposed && debugLogger.IsActive(category))
- debugLogger.Add(message, category);
- }
- catch (ObjectDisposedException) { }
- }
- #endregion
- }
- }
|