ASP.NET Core EventLog提供程序

时间:2017-12-12 12:47:45

标签: c# asp.net asp.net-web-api logging asp.net-core

我有一个使用.NET Framework ASP.NET Core 2.0的项目,并希望实现对Windows事件日志的记录,就像我阅读here

添加日志提供程序

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";
        }
    }

它适用于控制台,我看到我的日志消息。但我无法使用事件查看器在事件日志中找到该消息。为什么呢?

2 个答案:

答案 0 :(得分:5)

logging.AddEventSourceLogger()

适用于Event Tracing

对于Event Log,您要使用:

logging.AddEventLog()

答案 1 :(得分:1)

从Nuget安装Microsoft.Extensions.Logging.EventLog。

在program.cs文件中包含Microsoft.Extensions.Logging.EventLog

然后logging.AddEventLog()成为可能,因此您将能够实现自己的目标