导航

05-001 Logging 之 Interfaces

Posted on 2015-03-17 16:41  DotNet1010  阅读(147)  评论(0)    收藏  举报

主要接口有四个:

1---ILoggerProvider  可以理解为用什么记录或者记录在哪里   实现类有:

public class ConsoleLoggerProvider: ILoggerProvider{}
public class NLogLoggerProvider   : ILoggerProvider{}
public class SerilogLoggerProvider : ILoggerProvider, ILogEventEnricher{}
    public interface ILoggerProvider
    {
        /// <summary>
        /// Creates a new ILogger instance of the given name.
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        ILogger Create(string name);
    }

 2---ILoggerFactory:  AddProvider方法 负责添加具体的实现类 如上述的3种.

Create 方法:创建一个用来调用实现类的 ILogger.

实现类:LoggerFactory

    public interface ILoggerFactory
    {
        /// <summary>
        /// Creates a new ILogger instance of the given name.
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        ILogger Create(string name);

        void AddProvider(ILoggerProvider provider);
    }

 3. --ILogger:

    public interface ILogger
    {
        /// <summary>
        /// Aggregates most logging patterns to a single method.
        /// </summary>
        /// <param name="logLevel"></param>
        /// <param name="eventId"></param>
        /// <param name="state"></param>
        /// <param name="exception"></param>
        /// <param name="formatter"></param>
        /// <returns></returns>
        void Write(LogLevel logLevel, int eventId, object state, Exception exception, Func<object, Exception, string> formatter);

        /// <summary>
        /// Checks if the given TraceEventType is enabled.
        /// </summary>
        /// <param name="logLevel"></param>
        /// <returns></returns>
        bool IsEnabled(LogLevel logLevel);

        /// <summary>
        /// Begins a logical operation scope.
        /// </summary>
        /// <param name="state">The identifier for the scope.</param>
        /// <returns>An IDisposable that ends the logical operation scope on dispose.</returns>
        IDisposable BeginScope(object state);
    }

Write 方法中的 state 可以是一个对象 也可以是一段文字。

实现类有以下几个:

 internal class Logger : ILogger{}
 public   class ConsoleLogger : ILogger{}
 public class SerilogLogger : ILogger  {}
 namespace Microsoft.Framework.Logging.NLog
 {
    public class NLogLoggerProvider : ILoggerProvider
     {
         private class Logger : ILogger
         {
           private readonly global::NLog.Logger _logger;
         }
     }
  }

 4---ILoggerStructure:

实现类有一个 abstract 类

 public abstract class LoggerStructureBase : ILoggerStructure {}
 public interface ILoggerStructure
    {
        /// <summary>
        /// A brief message to give context for the structure being logged.
        /// </summary>
        string Message { get; }

        /// <summary>
        /// Returns an enumerable of key value pairs mapping the name of the structured data to the data.
        /// </summary>
        IEnumerable<KeyValuePair<string, object>> GetValues();

        /// <summary>
        /// Returns a human-readable string of the structured data.
        /// </summary>
        string Format();
    }