主要接口有四个:
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();
}
浙公网安备 33010602011771号