Рейтинговые книги
Читем онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 591 592 593 594 595 596 597 598 599 ... 642

public static IHostBuilder ConfigureSerilog(this IHostBuilder builder)

{

  builder

    .ConfigureLogging((context, logging) => { logging.ClearProviders(); })

    .UseSerilog((hostingContext, loggerConfiguration) =>

  {

    var config = hostingContext.Configuration;

    var connectionString = config.GetConnectionString("AutoLot").ToString();

    var tableName = config["Logging:MSSqlServer:tableName"].ToString();

    var schema = config["Logging:MSSqlServer:schema"].ToString();

    string restrictedToMinimumLevel =

      config["Logging:MSSqlServer:restrictedToMinimumLevel"].ToString();

    if (!Enum.TryParse<LogEventLevel>(restrictedToMinimumLevel, out var logLevel))

    {

      logLevel = LogEventLevel.Debug;

    }

     LogEventLevel level = (LogEventLevel)Enum.Parse(typeof(LogEventLevel),

                            restrictedToMinimumLevel);

    var sqlOptions = new MSSqlServerSinkOptions

   {

      AutoCreateSqlTable = false,

      SchemaName = schema,

      TableName = tableName,

    };

    if (hostingContext.HostingEnvironment.IsDevelopment())

    {

      sqlOptions.BatchPeriod = new TimeSpan(0, 0, 0, 1);

      sqlOptions.BatchPostingLimit = 1;

    }

    loggerConfiguration

      .Enrich.FromLogContext()

      .Enrich.WithMachineName()

      .WriteTo.File(

        path: "ErrorLog.txt",

        rollingInterval: RollingInterval.Day,

        restrictedToMinimumLevel: logLevel,

        outputTemplate: OutputTemplate)

      .WriteTo.Console(restrictedToMinimumLevel: logLevel)

      .WriteTo.MSSqlServer(

        connectionString: connectionString,

        sqlOptions,

        restrictedToMinimumLevel: level,

        columnOptions: ColumnOptions);

  });

  return builder;

}

Теперь, когда все готово, пора заменить стандартное средство ведения журнала на Serilog.

Обновление настроек приложения

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

Раздел Logging во всех файлах настроек приложения (appsettings.json, appsettings.development.json и appsettings.production) для проектов AutoLot.Api и AutoLot.Dal потребуется модифицировать с учетом новой информации о ведении журнала и добавить имя приложения.

Откройте файлы appsettings.json и обновите размертку JSON, как показано ниже; удостоверьтесь в том, что применяете корректное имя проекта в узле ApplicationName и указываете строку подключения, соответствующую вашей системе:

// appsettings.json

{

  "Logging": {

<b>    &quot;MSSqlServer&quot;: {</b>

<b>      &quot;schema&quot;: &quot;Logging&quot;,</b>

<b>      &quot;tableName&quot;: &quot;SeriLogs&quot;,</b>

<b>      &quot;restrictedToMinimumLevel&quot;: &quot;Warning&quot;</b>

<b>    }</b>

  },

<b>  &quot;ApplicationName&quot;: &quot;AutoLot.Api&quot;,</b>

  &quot;AllowedHosts&quot;: &quot;*&quot;

}

// appsettings.development.json

{

  &quot;Logging&quot;: {

<b>    &quot;MSSqlServer&quot;: {</b>

<b>      &quot;schema&quot;: &quot;Logging&quot;,</b>

<b>      &quot;tableName&quot;: &quot;SeriLogs&quot;,</b>

<b>      &quot;restrictedToMinimumLevel&quot;: &quot;Warning&quot;</b>

<b>    }</b>

  },

  &quot;RebuildDataBase&quot;: false,

<b>  &quot;ApplicationName&quot;: &quot;AutoLot.Api - Dev&quot;,</b>

  &quot;ConnectionStrings&quot;: {

    &quot;AutoLot&quot;: &quot;Server=.,5433;Database=AutoLot;User ID=sa;Password=P@ssw0rd;&quot;

  }

}

// appsettings.production.json

{

  &quot;Logging&quot;: {

<b>    &quot;MSSqlServer&quot;: {</b>

1 ... 591 592 593 594 595 596 597 598 599 ... 642
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Похожие на Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю книги

Оставить комментарий