c# - 用户 ILogger使用 Caliburn.Micro SimpleContainer
问题描述
我有一个 .net-core 3 WPF 应用程序,我正在尝试将 MicrosoftILogger<T>
与 Caliburn.Micro 依赖注入系统一起使用,但我不知道如何在SimpleContainer
通用ILogger
.
到目前为止,我所做的是ILoger
从 a创建一个LoggerFactory
:
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();
}
如果我将在视图模型中请求一个实例,这将不起作用,ILooger<MyType>
因为记录器是使用空字符串作为类别名称创建的。
我应该使用反射为我的应用程序中的每种类型创建一个记录器的实例吗?这听起来不太好。
我知道我可以LoggerFactory
直接在 DI 中注入 a,但这意味着要重构所有类库以使用它而不是ILogger
直接使用 a。
解决方案
推荐阅读
- outlook - 无法让 getCallbackTokenAsync 正常运行
- performance - 使用 Jmeter 进行性能负载测试以及资产文件如何影响结果
- javascript - 将对象数组一分为二:不是全部都枚举了吗?
- c# - 如何使用(Core 2.2)Web API 返回生成的 XLSX?
- python - 用于读取数字的清洁图像 Pytesseract
- java - Firebase 更新后 RecyclerView 不刷新
- php - 哪个更适合检查图像?php或js
- sql-server-2016 - 当操作数是可变的时,T-SQL 中是否有任何方法可以使用动态操作数
- c# - “../”在指定 ProcessInfo 文件名时似乎不起作用
- android - 为什么我的 LocalDate.parse 不能使用从 gson 插入的值?