如何将事件记录到 ASP.NET Core Web API 中的事件查看器?

Fab*_*uez 7 logging .net-core asp.net-core asp.net-core-webapi

我正在尝试登录到 Windows Server 2016 Standard 上托管的 ASP.NET Core 2.1 Web API 中的事件查看器。

我的控制器中有这个:

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

public TestController(MyContext context, ILogger<MyController> logger)
{
    _context = context;
    _logger = logger;
}
Run Code Online (Sandbox Code Playgroud)

但我认为我在 Program.cs 中的 CreateWebHostBuilder() 方法中做错了,因为它不起作用:

我有这个:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();
Run Code Online (Sandbox Code Playgroud)

我将其修改为:

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

但我一定是做错了什么......有什么想法吗?我在这里读到,显然 EVent Viewer 日志记录现在已融入 .Net Core 2.1 Write to EventLog in .Net Core

Tom*_*sek 12

对于使用 .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>();
Run Code Online (Sandbox Code Playgroud)

这在.NET Core Logging docs的底部注明。

更新:如果有人在 .NET Core 2.2 发布后仍然登陆这里,这仍然与.NET Core 3.1 日志相关

  • 请注意,您需要添加另一个 nuget 包:Microsoft.Extensions.Logging.EventLog,它不包含在 Microsoft.Extensions.Logging 包中 (5认同)

Fab*_*uez 6

好的,我必须将Microsoft.Extensions.Logging.EventLog添加到项目中(来自 Nuget)。

然后,在 Startup.cs 中:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
   loggerFactory.AddEventLog();
}
Run Code Online (Sandbox Code Playgroud)

  • 奇怪的是,它可以在我的开发计算机(Windows 10)上运行,但不能在我的服务器(Windows Server 2016 Standard)上运行:( (2认同)