Я настроил Serilog в appsettings.json
для регистрации записей в Logstash через tcp в моем asp net core web api
приложении следующим образом:
{
"Serilog": {
"Using": [ "Serilog.Sinks.Network" ],
"MinimumLevel": {
"Default": "Information"
},
"WriteTo:0": {
"Name": "TCPSink",
"Args": {
"uri": "tcp://172.26.48.39:5066"
}
},
"Properties": {
"app_id": "my-service-api",
"index": "my-app-"
}
},
...
}
Но он регистрирует слишком много сообщений.Например, у меня есть метод действия CreateToken в контроллере Token:
[HttpPost]
public ActionResult<string> CreateToken([FromBody] CredentialsModel credentials)
{
var user = _authentication.Authenticate(credentials);
if (user == null)
{
Log.Warning("Unable to authenticate an user: {Login}, {Password}",
credentials.Username, credentials.Password);
return Unauthorized();
}
return BuildToken();
}
Мне нужно зарегистрировать только одно сообщение:
Невозможно аутентифицировать пользователя. Логин Пароль
Но Serilog регистрирует следующее:
Запрос запуска HTTP / 1.1 POST http://localhost:5000/api/token application / json 57
Маршрут, соответствующий "{action = \"CreateToken \", controller = \ "Token \"} ".Выполнение действия «Deal.WebApi.Controllers.TokenController.CreateToken (Deal.WebApi)»
Выполнение метода действия «Deal.WebApi.Controllers.TokenController.CreateToken (Deal.WebApi)» с аргументами (Deal.WebApi) ».BL.Models.Auth.CredentialsModel "]) - Состояние проверки: Действительный
Невозможно подтвердить подлинность пользователя: Логин Пароль
Метод выполненного действия" Deal.WebApi.Controllers.TokenController.CreateToken (Deal.WebApi..CreateToken (Deal.WebApi) "в 95.272ms
Запрос завершен в 123.9485ms 401
Как мне избавиться от нежелательных сообщений?
Это мойProgram.cs
файл:
public class Program
{
public static void Main(string[] args)
{
var currentEnv = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{currentEnv}.json", true)
.AddEnvironmentVariables()
.Build();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(config)
.CreateLogger();
try
{
Log.Information("Start web host");
CreateWebHostBuilder(args).Build().Run();
}
catch (Exception ex)
{
Log.Fatal(ex, "Host terminated unexpectedly");
}
finally
{
Log.CloseAndFlush();
}
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseSerilog()
.UseStartup<Startup>();
}