C# Microsoft扩展日志的生存期
我目前正在编写一个小包装器,其界面是“Microsoft.Extensions.Logging” 这样做的主要原因是我不能将FakeiTasy与诸如“LogWarning”之类的扩展方法一起使用 以下是一个小样本:C# Microsoft扩展日志的生存期,c#,asp.net-core,asp.net-core-2.0,C#,Asp.net Core,Asp.net Core 2.0,我目前正在编写一个小包装器,其界面是“Microsoft.Extensions.Logging” 这样做的主要原因是我不能将FakeiTasy与诸如“LogWarning”之类的扩展方法一起使用 以下是一个小样本: public interface ILoggerWrapper<out T> { void LogWarning(string message, params object[] args); void LogWarning(Exception except
public interface ILoggerWrapper<out T>
{
void LogWarning(string message, params object[] args);
void LogWarning(Exception exception, string message, params object[] args);
}
public class MicrosoftLoggerWrapper<T> : ILoggerWrapper<T>
{
private readonly ILogger<T> _logger;
public MicrosoftLoggerWrapper(ILogger<T> logger)
{
_logger = logger;
}
public void LogWarning(string message, params object[] args)
{
_logger.LogWarning(message, args);
}
}
公共接口
{
无效日志警告(字符串消息,参数对象[]args);
无效日志警告(异常、字符串消息、参数对象[]args);
}
公共类MicrosoftLoggerWrapper:ILoggerWrapper
{
专用只读ILogger\u记录器;
公共MicrosoftLoggerWrapper(ILogger记录器)
{
_记录器=记录器;
}
public void LogWarning(字符串消息,参数对象[]args)
{
_logger.LogWarning(消息,args);
}
}
现在我想知道这个记录器的生命周期以及“Microsoft.Extensions.Logging”的生命周期。它是单例还是作用域
我应该如何在ServiceCollection中注册包装器?现在我是这样做的:
services.AddSingleton(typeof(ILoggerWrapper<>), typeof(MicrosoftLoggerWrapper<>));
services.AddSingleton(typeof(ILoggerWrapper),typeof(MicrosoftLoggerWrapper));
这是单例(证明:)顺便说一句,您不需要模拟扩展方法。您只需要模拟ILogger
interface-void Log(LogLevel LogLevel,EventId EventId,TState state,Exception Exception,Func formatter)中的一个方法代码>。所有扩展方法都使用此方法,因此模拟扩展方法毫无意义。^this。模拟Log
方法。无论如何,那样更容易。Microsoft.Extensions.Logging已经是一个日志抽象。不要在它周围创建一个完整的另一个。