我们正在编写一个新的日志功能并注入到我们现有的服务中。
以下是我们的做法:
1) 在 Program.cs 中使用 UseSerilog() 调用设置 Serilog
2) 在 appsettings.json 中设置 Serilog 配置以设置接收器以写入日志文件。
3) 编写了一个 Facade Custom Logger 类,它使用 Serilog 全局 Log 实例在内部进行日志记录。
public class MyLogger<T> : IMyLogger<T>
public MyLogger()
{
_logger = Log.ForContext(typeof(T));
}
public void LogInformation(Exception ex)
{
_logger.Information(ex.Message);
}
4) 通过 DI 将 IMyLogger 注入到我现有的所有服务中
5)在ConfigureServices()中注册所有服务(Logger、Project相关服务)
一切正常。但是我想在我的应用程序中为不同的命名空间设置不同的日志级别,以便在生产中我可以简单地在配置中设置只有 4-5 个重要的核心命名空间,其日志记录方法调用 (MyLogger.LogInformation()) 将被发送到日志文件。
像下面这样的可能吗?因为 MyLogger 是记录的类。但是如果调用来自 MyProject.CartManager 命名空间,那么它应该根据示例中的以下配置自动记录。
请分享你的想法。
例如:
"Serilog": {
"Using": [ "Serilog.Sinks.File" ],
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Information",
"MyProject.Inventory": "Information"
"MyProject.CartManager": "Error"
}
}