首页 > 编程语言 >C# .NET6 Serilog的使用和配置

C# .NET6 Serilog的使用和配置

时间:2023-01-16 14:45:03浏览次数:47  
标签:Information Log C# app Serilog Services NET6 builder

入口文件:Program.cs

using Serilog;
using Serilog.Events;

// 创建Serilog
Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
    .Enrich.FromLogContext()
    .WriteTo.Console()
    .CreateBootstrapLogger();
try
{
    Log.Information("Starting web host");

    // 创建应用程序
    var builder = WebApplication.CreateBuilder(args);
    // 配置文件
    var configuration = builder.Configuration;
    // 配置Serilog
    builder.Host.UseSerilog((context, services, configuration) => configuration
                    .ReadFrom.Configuration(context.Configuration)
                    .ReadFrom.Services(services));

    // 向容器中添加服务。
    // 添加控制器
    builder.Services.AddControllers();
    // 添加ApiExplorer
    builder.Services.AddEndpointsApiExplorer();
    // 添加Swagger
    builder.Services.AddSwaggerGen();
    // 生成应用程序
    var app = builder.Build();

    // 配置HTTP请求管道。
    // 开发者模式
    if (app.Environment.IsDevelopment())
    {
        // 使用开发者异常页面 
        app.UseDeveloperExceptionPage();
    }
    // 使用Swagger
    app.UseSwagger();
    app.UseSwaggerUI();
    // 使用Serilog记录Request
    app.UseSerilogRequestLogging();
    // 使用HTTPS重定向
    app.UseHttpsRedirection();
    // 使用身份认证
    app.UseAuthorization();
    // 使用控制器
    app.MapControllers();
    // 运行应用程序
    app.Run();
}
catch (Exception ex)
{
    Log.Fatal(ex, "Host terminated unexpectedly");
}
finally
{
    Log.CloseAndFlush();
}

配置文件:appsettings.json

{
  "AllowedHosts": "*",
  "Serilog": {
    "MinimumLevel": {
      "Default": "Debug",
      "Override": {
        "Microsoft": "Information",
        "Microsoft.AspNetCore": "Information"
      }
    },
    "WriteTo": [
      {
        "Name": "File",
        "Args": {
          "Path": "D:/logs/WebApi_NET6.0/log-.txt",
          "RollingInterval": "Day",
          "OutputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{RequestId}][{Level:u3}][{SourceContext}] {Message:lj}{NewLine}{Exception}",
          "Shared": true,
          "RollOnFileSizeLimit": true,
          "FileSizeLimitBytes": 1048576,
          "RetainedFileCountLimit": 1000
        }
      },
      {
        "Name": "Console",
        "Args": {}
      },
      {
        "Name": "Debug",
        "Args": {}
      }
    ]
  }
}

 

翻译

搜索

复制

标签:Information,Log,C#,app,Serilog,Services,NET6,builder
From: https://www.cnblogs.com/smartnn/p/17055344.html

相关文章

  • C语言 函数返回一位数组,二维数组
    一维数组方法:int*getArray(intn){inti,j;int*a=(int*)malloc(n*sizeof(int));//申请内存空间,大小为n个int长度。printf("请输入一维数组:");......
  • acwing 4700. 何以包邮?
    acwing4700.何以包邮?水一期题目描述新学期伊始,适逢顿顿书城有购书满$x$元包邮的活动,小$P$同学欣然前往准备买些参考书。一番浏览后,小$P$初步筛选出$n......
  • nginx升级连接为websocket
    利用nginx代理wss【通讯原理及流程】wss协议实际是websocket+SSL,就是在websocket协议上加入SSL层,类似https(http+SSL)。客户端发起wss连接连到nginxnginx将wss协议的数......
  • C# .NET6 中间件 获取请求和响应信息
    ///<summary>///HTTP中间件///</summary>publicclassHttpMiddleware{///<summary>///请求委托///</summary>privatereadonlyRequestDe......
  • ChatGPT中文版重装上阵
    ChatGPT中文版重装上阵近日,AI模型市场联手OpenAI推出了新版ChatGPT,这是一款面向聊天机器人开发的自然语言处理(NLP)模型。ChatGPT是一款非常强大的NLP模型,可以帮助开发者构建......
  • 在dbeaver软件上修改sql报DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016 解决办法
     例如:ALTERTABLEICRM_LY_ONEKIND_ACTALTER COLUMNACT_TIMESSETDATA TYPEDECIMAL(10,2) 修改字段的类型这时就会报Error:SQLCODE=-668,SQLSTATE=57016 ......
  • Atcoder ABC285 赛后总结
    A—EdgeChecker2传送门题目大意给你一棵树,输入两个\(1-15\)的数\(a,b\),求\(a\)是否是\(b\)老爹父亲这颗树如图:题目解法超级无敌暴力法(wu一种最最最简......
  • 元素定位之--class_name定位
    根据标签中属性class来进行定位的一种方法fromseleniumimportwebdriverfromtimeimportsleepdriver=webdriver.Firefox()driver.get("http://www.baidu.com")......
  • 三、四(调优系统性能、使用ACL控制对文件的访问)
    三、调优系统性能(不是重点)                     四、使用ACL控制对文件的访问           ......
  • 从 Kubectl Top 说起, 谈谈 Kubernetes 是如何进行资源监控的?
    一、前言kubectltop可以很方便地查看node、pod的实时资源使用情况:如CPU、内存。这篇文章会介绍其数据链路和实现原理,同时借kubectltop阐述k8s中的监控体系,窥一斑而......