- Added Microsoft.Extensions.Logging to various projects for enhanced logging capabilities. - Updated AccessDbRepository and AttachmentRepository to include logging for database operations. - Integrated logging into MailListener for better error handling and operational insights. - Modified tests to utilize mocks for ILogger to ensure logging behavior is tested. - Enhanced App.xaml.cs and MainWindow.xaml.cs to log application startup and initialization events. - Created LoggingBootstrapper to configure logging services in the WPF application. - Updated TODOs-and-Roadmap.md to reflect the addition of logging features.
57 lines
2.6 KiB
C#
57 lines
2.6 KiB
C#
using ComplianceNFs.Service;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Hosting;
|
|
using ComplianceNFs.Core.Ports;
|
|
using ComplianceNFs.Infrastructure.Repositories;
|
|
using ComplianceNFs.Infrastructure.Mail;
|
|
using ComplianceNFs.Infrastructure.Parsers;
|
|
using ComplianceNFs.Infrastructure.Archiving;
|
|
using ComplianceNFs.Core.Application.Services;
|
|
using ComplianceNFs.Core.Application;
|
|
|
|
IHost host = Host.CreateDefaultBuilder(args)
|
|
.ConfigureAppConfiguration((hostingContext, config) =>
|
|
{
|
|
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
|
|
})
|
|
.ConfigureServices((context, services) =>
|
|
{
|
|
var config = context.Configuration;
|
|
// Register infrastructure
|
|
services.AddSingleton<IAccessDbRepository>(sp =>
|
|
{
|
|
var connectionString = config["AccessConnectionString"];
|
|
if (string.IsNullOrWhiteSpace(connectionString))
|
|
throw new InvalidOperationException("AccessConnectionString is missing in configuration.");
|
|
return new AccessDbRepository(connectionString);
|
|
});
|
|
services.AddSingleton<IAttachmentRepository>(sp =>
|
|
{
|
|
var pgConnectionString = config["PostgresConnectionString"];
|
|
if (string.IsNullOrWhiteSpace(pgConnectionString))
|
|
throw new InvalidOperationException("PostgresConnectionString is missing in configuration.");
|
|
var logger = sp.GetRequiredService<Microsoft.Extensions.Logging.ILogger<AttachmentRepository>>();
|
|
return new AttachmentRepository(pgConnectionString, logger);
|
|
});
|
|
services.AddSingleton<IMailListener, MailListener>();
|
|
services.AddSingleton<IXmlParser, XmlParser>();
|
|
services.AddSingleton<IPdfParser, PdfParser>();
|
|
services.AddSingleton<IFileArchiver>(sp =>
|
|
{
|
|
var archiveBasePath = config["ArchiveBasePath"];
|
|
if (string.IsNullOrWhiteSpace(archiveBasePath))
|
|
throw new InvalidOperationException("ArchiveBasePath is missing in configuration.");
|
|
return new FileArchiver(archiveBasePath);
|
|
});
|
|
services.AddSingleton<IInvoiceIngestionService, InvoiceIngestionService>();
|
|
services.AddSingleton<IMatchingService, MatchingService>();
|
|
services.AddSingleton<IComplianceService, ComplianceService>();
|
|
services.AddSingleton<INotificationService, NotificationService>();
|
|
services.AddSingleton<IArchivingService, ArchivingService>();
|
|
services.AddHostedService<Worker>();
|
|
})
|
|
.Build();
|
|
|
|
host.Run();
|