web-dev-qa-db-ja.com

ASP .Net Core 2.1 WebAPIでイベントビューアにログを記録する

Windows Server 2016StandardでホストされているASP .Net Core 2.1 WebAPIでイベントビューアーにログインしようとしています。

私はこれを私のコントローラーに持っています:

private readonly ILogger<MyController> _logger;
private readonly MyContext _context;

public TestController(MyContext context, ILogger<MyController> logger)
{
    _context = context;
    _logger = logger;
}

しかし、Program.csのCreateWebHostBuilder()メソッドが機能していないため、何か問題が発生していると思います。

私はこれを持っていました:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();

そして私はそれをこれに変更しました:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
            .ConfigureLogging((hostingContext, logging) =>
            {
                logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
                logging.AddEventSourceLogger();
            });

しかし、私は何か間違ったことをしているに違いありません...何かアイデアはありますか?ここで、明らかにEVentViewerのログが.NetCore 2.1に組み込まれていることを読みました 。Net CoreのEventLogに書き込む

5

.NET Core 2.2を使用してこれに遭遇した人のために、イベントログロガー(Microsoft.Extensions.Logging.EventLogから)をProgram.csに追加する必要があります。

public static void Main(string[] args)
{
    CreateWebHostBuilder(args).Build().Run();
}

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .ConfigureLogging((context, logging) =>
        {
            logging.AddEventLog();
        })
        .UseStartup<Startup>();

これは、 。NET Core Logging docs の下部に記載されています。

UPDATE:。NET Core 2.2の後で誰かがまだここに着陸した場合、これは 。NET Core 3.1ロギング に関連します。

6
Tom Faltesek

OK、プロジェクトにMicrosoft.Extensions.Logging.EventLogを追加する必要がありました(Nugetから)。

次に、Startup.csで:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
   loggerFactory.AddEventLog();
}
4