c# - 登录控制台应用程序(带有 DI 的 .NET Core)
问题描述
伙计们。我尝试使用 DI(.NET Core 3.1)将日志记录添加到我的控制台应用程序中,似乎 IoC 容器可以正常工作,将记录器依赖项注入到我的类中,但 LogXXX 方法不会记录到输出。可能是什么原因?也许还有一些额外的配置?
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
namespace DependencyInjection
{
class Program
{
static void Main(string[] args)
{
var services = new ServiceCollection();
ConfigureServices(services);
var serviceProvider = services.BuildServiceProvider();
var logger = serviceProvider.GetService<ILogger<Program>>();
logger.LogInformation("Hello world!");
}
static void ConfigureServices(ServiceCollection services)
{
services.AddLogging(loggerBuilder =>
{
loggerBuilder.ClearProviders();
loggerBuilder.AddConsole();
});
}
}
}
解决方案
文档有控制台应用程序的当前示例
class Program
{
static void Main(string[] args)
{
using var loggerFactory = LoggerFactory.Create(builder =>
{
builder
.AddFilter("Microsoft", LogLevel.Warning)
.AddFilter("System", LogLevel.Warning)
.AddFilter("LoggingConsoleApp.Program", LogLevel.Debug)
.AddConsole();
});
ILogger logger = loggerFactory.CreateLogger<Program>();
logger.LogInformation("Example log message");
}
}
当然你需要安装合适的 Nuget 包:
Microsoft.Extensions.Logging
Microsoft.Extensions.Logging.Console
推荐阅读
- ios - Trouble Selecting Table View Rows
- c++ - C++ Function Calling with Parameter in int main
- algorithm - 为以下示例计算大“O”
- ios - Obj-C - 所有自定义 MKMapView 注释并不总是显示在 MapView 上?
- vb.net - 从列表中移动一个项目并将其从前一个列表中删除
- python - Python舍入问题需要将每个数字舍入一半
- sql - 从标准输入 PostgreSQL 复制
- c# - 为什么我可以跳而不是走路,而不是走路而不是跳。我不知道代码有什么问题
- java - 有人知道如何在 java 泛型中制作这种类型的程序吗?
- c - “数组的元素类型不完整”错误