创建自定义日志过滤器以仅在日志文件中包含特定信息

时间:2019-12-27 06:33:34

标签: asp.net-core logging serilog serilog-exceptions

我正在使用ASP.NET Core 1.1.13应用程序,并且为了进行日志记录,我正在使用Serilog。 我想在日志文件中记录一些特定的日志。

即->所有异常,如果某些日志信息包含某些特定的单词,例如请求Request finished in 5506.8283ms 204 响应码,除了200。

下面是我的配置。

  1. appsettings.json
{
  "Serilog": {
    "SeqServerUrl": null,
    "LogstashUrl": null,
    "FilePath": "Logs/log.txt",
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "System": "Warning"
      }
    }
  },
  "AllowedHosts": "*"
}
  1. Startup.cs

在此,我尝试为每个级别创建不同的日志文件。

      public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory 
           loggerFactory, IApplicationLifetime lifetime, IServiceProvider serviceProvider)
         {
        var filePath = Configuration["Serilog:FilePath"];
        var serilogger = new LoggerConfiguration()
            .MinimumLevel.Information()
            .Enrich.FromLogContext()
            .WriteTo.Console()
            .WriteTo.Map(e=>e.Level,(level,wt)=> wt.RollingFile("Logs\\{Date}-" + 
            level+".log",outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine} 
             {Exception}", fileSizeLimitBytes: 10485760, retainedFileCountLimit: null))
            .CreateLogger();

        loggerFactory.AddSerilog(serilogger);

您能指导我如何仅添加自定义日志吗?

下面是我当前的日志示例。

[13:11:04 INF] Executing ObjectResult, writing value Microsoft.AspNetCore.Mvc.ControllerContext.
[13:11:04 INF] Executed action APIName in 124.31070000000001ms
[13:11:04 INF] Request finished in 128.8629ms 200 application/json; charset=utf-8
[13:11:04 INF] MyRatesService.GetOutletRates => Gets 35 outlet rates of OutletId=6
[13:11:04 INF] Executing ObjectResult, writing value Microsoft.AspNetCore.Mvc.ControllerContext.
[13:11:04 INF] Executed action APIName in 486.30010000000004ms
[13:11:04 INF] Request finished in 490.9998ms 200 application/json; charset=utf-8
[13:11:04 INF] Request starting HTTP/1.1 POST http://localhost:5002/api/v1/Notification/NotifySyncAllNotificationsRequest/ application/json; charset=utf-8 15
[13:11:04 INF] Executing action method APIName with arguments  - ModelState is "Valid"
[13:11:04 INF] Executing ObjectResult, writing value Microsoft.AspNetCore.Mvc.ControllerContext.
[13:11:04 INF] Executed action APIName in 16.166900000000002ms
[13:11:04 INF] Request finished in 22.8557ms 200 application/json; charset=utf-8
[13:12:15 INF] Request starting HTTP/1.1 POST http://localhost:5002/api/v1/Identity/SessionValidate/ application/json; charset=utf-8 25
[13:12:15 INF] Executing action method APIName with arguments  - ModelState is "Valid"
[13:12:15 INF] Executing ObjectResult, writing value Microsoft.AspNetCore.Mvc.ControllerContext.
[13:12:15 INF] Executed action APIName in 4.2384ms
[13:12:15 INF] Request finished in 5.9403ms 200 application/json; charset=utf-8
[13:12:19 INF] Request starting HTTP/1.1 GET http://localhost:5002/api/v1/xxx/xxx/6/0/ghgf  
[13:12:19 INF] Executing action method APIName with arguments (["6","0","ghgf"]) - ModelState is "Valid"
[13:12:25 INF] Executing ObjectResult, writing value Microsoft.AspNetCore.Mvc.ControllerContext.
[13:12:25 INF] Executed action APIName in 5495.6462ms
[13:12:25 INF] Request finished in 5506.8283ms 204 

所以,我只想添加

Request starting HTTP/1.1 GET http://localhost:5002/api/v1/xxx/xxx/6/0/ghgf  
[13:12:25 INF] Request finished in 5506.8283ms 204 *

(原因-它返回204状态代码。是否可以在其中包括它的请求启动以及知道它从哪个请求返回204)

所以,这只是我描述的一个例子。

0 个答案:

没有答案