2
我已經創建了一個使用服務層的控制檯應用程序。如何使用LoggerFactory和Microsoft.Extensions.Logging進行.NET Core Console日誌記錄使用C#
Program.cs的
public static void Main(string[] args)
{
// Create service collection
var serviceCollection = new ServiceCollection();
ConfigureServices(serviceCollection);
// Create service provider
var serviceProvider = serviceCollection.BuildServiceProvider();
// Entry to run app
serviceProvider.GetService<App>().Run().RunSynchronously();
}
private static void ConfigureServices(IServiceCollection serviceCollection)
{
// Configuration
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", false)
.Build();
serviceCollection.AddOptions();
serviceCollection.Configure<Settings>(options =>
{
//...
});
// Services
serviceCollection.AddTransient<IOneService, OneService>();
serviceCollection.AddTransient<ISecondService, SecondService>();
// Repositories
serviceCollection.AddTransient<MyContext, MyContext>();
serviceCollection.AddTransient<IOneRepository, OneRepository>();
// App
serviceCollection.AddTransient<App>();
// Logger
// Automapper
serviceCollection.AddSingleton(new AutoMapperProfileConfiguration());
serviceCollection.AddScoped<IMapper>(sp =>
new Mapper(sp.GetRequiredService<IConfigurationProvider>(), sp.GetService));
}
我得到這個錯誤System.InvalidOperationException: Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger
1`和我猜我必須設置的LoggerFactory和Microsoft.Extensions.Logging對.NET核心日誌,但我不能做對。
我已經試過這樣的事情在main():
// Attempt 1
ILoggerFactory loggerFactory = new LoggerFactory()
.AddConsole()
.AddDebug();
ILogger logger = loggerFactory.CreateLogger<Program>();
logger.LogInformation(
"This is a test of the emergency broadcast system.");
// Attempt 2
serviceCollection.AddSingleton(new LoggerFactory()
.AddConsole()
.AddDebug());
任何想法?
您忘記調用服務集合上的'.AddLogging()'以將該功能添加到容器。 – Nkosi