【问题标题】:How Do I create a logger using .net core serilog?如何使用 .net core serilog 创建记录器?
【发布时间】:2022-09-27 15:43:42
【问题描述】:

我正在做 serilog,我想创建一个记录器类?

我有这个方法吗?

var configuration = new ConfigurationBuilder()
           .AddJsonFile(\"appsettings.json\")
           .Build();
            var logger = new LoggerConfiguration().MinimumLevel.Debug()
                .ReadFrom.Configuration(configuration)
                .CreateLogger();

有人可以向我解释这个类是如何生成的吗?

{
  \"Serilog\": {
    \"WriteTo\": [
      {
        \"Name\": \"File\",
        \"Args\": {
          \"path\": \"C:\\\\Users\\\\m_243\\\\OneDrive\\\\Desktop\\\\Adaa\\\\HRSoultion\\\\API\\\\APISerilogs\\\\AppLogs.log.txt\",
          \"rollingInterval\": \"Month\"
        }
      }
    ]
  },
  \"AllowedHosts\": \"*\",
  \"ConnectionStrings\": {
    \"HrSoultion\": \"server=.;database=HrSoultionv2;Trusted_Connection=True;MultipleActiveResultSets=true\"
  }
}
  • 这是什么类型的应用程序,控制台应用程序或 webapi ?你的问题是什么 ?你遇到了什么错误 ?

标签: asp.net-core


【解决方案1】:

Serilog.Sinks.File - 用于将日志写入一个或多个文件。

下面我用一个demo(应用程序是web api Core 3.1)来解释实现Serilog来登录一个文件。

首先,安装下面给出的必要软件包。

 <PackageReference Include="Serilog.AspNetCore" Version="3.4.0" />
    <PackageReference Include="Serilog.Sinks.Console" Version="4.1.0" />
    <PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />

其次,修改appsettings.json 文件以包含日志文件的路径。

"Serilog": {
    "Minimulevel": {
      "Default": "Information",
      "Overrides": {
        "Microsoft": "Warning",
        "Microsoft.Hosting.Lifetime": "Warning"
      }
    },
    "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
    "WriteTo": [        
      {
        "Name": "File",
        "Args": {
          "path": "./bin/log.txt",
          "rollingInterval": "Day"
        }
      }
    ] 
  }

然后修改 Program.cs 文件以从 JSON 文件中读取这些值。

 public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                })
            .UseSerilog((hostingContext,LoggerConfiguration)=>
                {
                    LoggerConfiguration.ReadFrom.Configuration(hostingContext.Configuration);

                });
    }

结果:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    相关资源
    最近更新 更多