Литмир - Электронная Библиотека
A
A

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.

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

Раздел

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>

595
{"b":"847442","o":1}