web-dev-qa-db-ja.com

ASP.NETコアEventLogプロバイダー

.NET Framework ASP.NET Core 2.0を使用しているプロジェクトがあり、次のようにWindowsイベントログへのログ記録を実装したいと思います ここ

ログプロバイダーを追加する

public class Program
{
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }

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

コントローラ

[Route("api/[controller]")]
public class ShortCodeController : Controller
{
        private readonly ILogger _logger;

        public ShortCodeController(ILogger<ShortCodeController> logger)
        {
            _logger = logger;

            _logger.LogInformation("INIT");
        }

        [HttpGet("{letters}/{digits}/{length}")]
        public string Get(bool letters, bool digits, int length)
        {
            _logger.LogError("TEST");

            return "value";
        }
    }

そしてそれはコンソールで動作します、私は私のログメッセージを見ます。しかし、イベントビューアを使用してイベントログでそのメッセージを見つけることができません。どうして?

5
Hagakurje
logging.AddEventSourceLogger()

イベントトレース 用です。

イベントログ の場合、次を使用します。

logging.AddEventLog()
5
mjwills

NugetからMicrosoft.Extensions.Logging.EventLogをインストールします。

Program.csファイルにMicrosoft.Extensions.Logging.EventLogを含めます

そうすれば、logging.AddEventLog()が可能になり、その結果、目標を達成できるようになります。

4
Tamseyc