如何在Windows Client (net6.0-windows)应用程序中使用Serilog &



我正在尝试使用。net 6.0在c# Windows客户端(表单)应用程序上使用Serilog和Ninjet

谁能告诉我如何配置Ninject,以便在这里注入ILogger:

public partial class TestingForm : Form
{
private readonly ILogger<TestingForm> _logger;
TestingForm(ILogger<TestingForm> logger)
{ 
_logger = logger;
}
//etc.
}

我更希望使用类似于这里使用的。useserilog()的东西:

public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog()
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});

从https://www.ezzylearning.net/tutorial/logging-in-asp-net-core-5-using-serilog但是我不知道怎么用Ninject

我创建了一个针对。net 6的Windows窗体应用程序。我通过Nuget安装了Serilog和Ninject。

MyModule.cs:

using Ninject.Modules;
using Serilog;
namespace WinFormsApp1;
public class MyModule : NinjectModule
{
public override void Load()
{
Bind<ILogger>().To<SeriLogging>();
}
}

Programs.cs:

internal static class Program
{
[STAThread]
static void Main()
{
ApplicationConfiguration.Initialize();
var kernel = new StandardKernel(new MyModule());
var form = kernel.Get<Form1>();
Application.Run(form);
}
}

Serilog.cs

public class SeriLogging : ILogger
{
public void Write(LogEvent logEvent)
{
//Implement Serilog here
}
}

Serilog的ILogger是非通用的,所以只使用ILogger。如果你想要TestingForm类型的日志记录器,那么你可能需要安装Microsoft.Extensions.Logging.

using Serilog;
namespace WinFormsApp1;
public partial class Form1 : Form
{
private readonly ILogger _logger;
public Form1(ILogger logger)
{
InitializeComponent();
_logger = logger;
}
private void Form1_Load(object sender, EventArgs e)
{
_logger.Error("aaaah");
}
}

相关内容

最新更新