使用Serilog在.NET Core MVC中使用Azure表存储进行日志记录

问题描述 投票:0回答:2

尽管在Google上花费了几个小时,但我仍未到达那里。我们有一个Core 3.1 MVC Web App项目,并且有人要求我使用SeriLog将日志写入Azure表存储。为了我的一生,我无法在线找到有效的示例或教程。这是我到目前为止所做的:

1)添加了以下NuGet的:

  • Serilog
  • Serilog.Extensions.Logging
  • Serilog.Sinks.AzureTaleStorage

2)在AppSettings.json中,替换为:

  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Information",
      "Microsoft.Hosting.Lifetime": "Warning"
    }

使用此:

  "Serilog": {
    "WriteTo": [
      {
        "Name": "AzureTableStorage",
        "Args": {
          "storageTableName": "Logs",
          "connectionString": "DefaultEndpointsProtocol=https;AccountName=***;AccountKey=***;EndpointSuffix=core.windows.net"
        }
      }
    ]
  },

现在我被困住了。当前位于Program.csCreateHostBuilder中:

.ConfigureLogging(logging =>
{
    logging.AddConsole();
})

我想我应该替换这个?但是,用什么呢?我不确定从这里要去哪里。 GutHub上的serilog-sinks-azuretablestorage页面没有太大帮助。而且我一直无法通过Google找到任何说明如何完成实施的内容。

c# .net-core serilog
2个回答
0
投票

嗯,我对此一无所获。但是在阅读了大约5篇不同的文章之后,我设法弄清楚了。在Program.cs中,默认情况下该位置:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureLogging(logging =>
        {
            logging.AddConsole();
        })

我用这个替换了它:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureLogging((hostingContext, logging) =>
        {
            var logger = new LoggerConfiguration()
                 .ReadFrom.Configuration(hostingContext.Configuration)
                 .CreateLogger();

            logging.AddSerilog(logger);
        })

hostingContextHostBuilderContext的一个实例,并且包含“ .Configuration”,它是IConfiguration的一个实例。因此,hostingContext.Configuration包含appsetting.json中的所有设置。

除了我在OP中提到的NuGet软件包,我还必须添加此软件包:

Serilog.Settings.Configuration

(令人惊讶的是,有时有时要花7或8个小时才能编写4行代码。]


0
投票

将Serilog.Settings.Configuration和Microsoft.Extensions.Logging nuget程序包添加到项目中,它有助于从appsettings.json中读取serilog配置设置,并确保Sartup.cs文件中的Serilog配置位于下方。

 public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
           //logger config 
            var logger = new LoggerConfiguration()
                                              .ReadFrom.Configuration(configuration)
                                              .CreateLogger();

            logger.Information("Logging configured");
            Log.Logger = logger;
        }

public void ConfigureServices(IServiceCollection services)
        {
            services.AddOptions();
            services.AddLogging(loggingBuilder =>
            {
                loggingBuilder.AddConfiguration(Configuration.GetSection("Logging"));
                loggingBuilder.AddConsole();
                loggingBuilder.AddDebug();
                //Add Serilog config to logbuilder
                loggingBuilder.AddSerilog(Log.Logger);
            });
}
© www.soinside.com 2019 - 2024. All rights reserved.