[英]How to write logs to EventLog by ILogger<T> in Asp.net Core?
[英]How to disable automatic log writing to EventLog at ASP.NET Core 7?
我有一个简单的 ASP.NET Core 7 Web API 我希望能够写入信息 Windows EventLog。
问题是每个对Get()
操作的请求都会自动写入我想禁用的 EventLog 中的大约 7 个日志,例如:
Request finished HTTP/2 GET https://localhost:44382/weatherforecast - - - 200 - text/plain;+charset=utf-8 2.3546ms
Executed endpoint 'LogTest.Controllers.WeatherForecastController.Get (LogTest)'
Executed action LogTest.Controllers.WeatherForecastController.Get (LogTest) in 0.827ms
我希望能够将信息日志写入 EventLog,因此为了禁用 7 个自动日志,我尝试像这样过滤 LogLevel
eventLogSettings.Filter = (x, y) => y >= LogLevel.Warning;
但是之后
_logger.LogInformation("My Log Test");
未写入事件日志。
这是我在Program.cs
中的代码:
var builder = WebApplication.CreateBuilder(args);
builder.Logging.ClearProviders();
builder.Logging.AddConsole();
builder.Logging.AddEventLog(eventLogSettings =>
{
eventLogSettings.LogName = "LogTest";
eventLogSettings.SourceName = "Test1";
eventLogSettings.Filter = (x, y) => y >= LogLevel.Warning;
});
builder.Services.AddControllers();
var app = builder.Build();
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
在WeatherForecastController.cs
中:
using Microsoft.AspNetCore.Mvc;
namespace LogTest.Controllers
{
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet]
public string Get()
{
_logger.LogInformation("My Log Test");
return "Test";
}
}
}
在此先感谢您的帮助,
股份公司
您可以尝试在 appsettings.json 中进行如下设置:
"EventLog": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning"
}
}
并查看本文档中的相关信息:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.