Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用户ILogger<;T>;带Caliburn.微型SimpleContainer_C#_Wpf_.net Core_Caliburn.micro - Fatal编程技术网

C# 用户ILogger<;T>;带Caliburn.微型SimpleContainer

C# 用户ILogger<;T>;带Caliburn.微型SimpleContainer,c#,wpf,.net-core,caliburn.micro,C#,Wpf,.net Core,Caliburn.micro,我有一个.net core 3 WPF应用程序,我正在尝试将Microsoft的ILogger与Caliburn.Micro dependency injection系统一起使用,但我不知道如何在SimpleContainer通用ILogger中注册 到目前为止,我所做的是从日志工厂创建ILoger: var serilog = ConfigureLogger(); ILoggerFactory loggerFactory = new LoggerFactory().AddSerilog(ser

我有一个.net core 3 WPF应用程序,我正在尝试将Microsoft的
ILogger
与Caliburn.Micro dependency injection系统一起使用,但我不知道如何在
SimpleContainer
通用
ILogger
中注册

到目前为止,我所做的是从
日志工厂创建
ILoger

var serilog = ConfigureLogger();
ILoggerFactory loggerFactory = new LoggerFactory().AddSerilog(serilog);
ILogger logger = loggerFactory.CreateLogger("");


container.RegisterInstance(typeof(ILogger<>), nameof(Microsoft.Extensions.Logging.ILogger), logger);

        private static Serilog.ILogger ConfigureLogger()
        {
            return new LoggerConfiguration()
                .MinimumLevel.Information()
                .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
                .MinimumLevel.Override("System", LogEventLevel.Warning)
                .Enrich.FromLogContext()
                .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}{NewLine}", theme: AnsiConsoleTheme.Literate)
                .WriteTo.File("log.txt", rollingInterval: RollingInterval.Day)
                .CreateLogger();
        }
var serilog=ConfigureLogger();
ILoggerFactory loggerFactory=新loggerFactory().AddSerilog(serilog);
ILogger logger=loggerFactory.CreateLogger(“”);
RegisterInstance(typeof(ILogger)、nameof(Microsoft.Extensions.Logging.ILogger)、logger);
专用静态Serilog.ILogger ConfigureLogger()
{
返回新的LoggerConfiguration()
.MinimumLevel.Information()
.MinimumLevel.Override(“Microsoft”,LogEventLevel.Warning)
.MinimumLevel.Override(“系统”,LogEventLevel.Warning)
.Enrich.FromLogContext()的
控制台(输出模板:“[{Timestamp:HH:mm:ss}{Level:u3}]{Message:lj}{NewLine}{Exception}{NewLine}”,主题:AnsiConsoleTheme.Literate)
.WriteTo.File(“log.txt”,rollingInterval:rollingInterval.Day)
.CreateLogger();
}
如果我在视图模型中请求一个
ILooger
的实例,这将不起作用,因为记录器是使用空字符串作为类别名称创建的

我是否应该使用反射为应用程序中的每种类型创建记录器实例?这听起来不太好


我知道我可以直接在DI中注入一个
LoggerFactory
,但这意味着要重新考虑所有类库以使用它,而不是直接使用
ILogger

您可以使用不同的DI容器,这是一个好主意。我会去做的。