Я занимаюсь разработкой приложения WinForms в .NET Core 3.0. Я хотел бы записать отладочную информацию в файл. Я видел, что Serilog был хорошим вариантом, но я тоже рад рассмотреть альтернативы. В идеале я хотел бы получить ссылку на мой регистратор в различных классах, используя внедрение зависимостей.
Большинство статей и документации, которые я нашел, были сосредоточены на ASP .NET, а не на WinForms, поэтому мне пришлось немного проявить воображение при настройке Serilog в моем методе static void Main()
*1004*.
Я правильно сделал? Не совсем!
public class Program
{
private static Logger _logger; // I noticed that you don't have to do
// this in the ASP .NET samples as it's
// taken care of "under the hood".
// However, I couldn't see any
// alternative in the standard
// WinForms template in VS.
private static void Main()
{
//Omitted some code about configuration files and WinForms initialization for brevity
var services = new ServiceCollection();
ServiceProvider = ConfigureServices(services);
Application.Run(Form1);
}
public static IServiceProvider ServiceProvider { get; private set; }
private static ServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddLogging(loggingBuilder => loggingBuilder.AddSerilog(GetLogger(), true));
GetLogger().Debug("Hello!!"); // Just testing... nothing happens. Where's my log file?
//Omitted registration of various unrelated services for brevity
return services.BuildServiceProvider();
}
private static Logger GetLogger()
{
if(_logger is null)
{
_logger = new LoggerConfiguration()
.WriteTo.File(@"c:\BenjaminLog-.txt", rollingInterval: RollingInterval.Day)
.CreateLogger();
}
return _logger;
}
}
}
Мой код собирается и запускается, но файл журнала не создается.