Язык программирования C#9 и платформа .NET5
Шрифт:
using System;
using System.Collections.Generic;
using System.Data;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Serilog;
using Serilog.Events;
using Serilog.Sinks.MSSqlServer;
namespace AutoLot.Services.Logging
{
public static class LoggingConfiguration
{
}
}
Для
private static readonly string OutputTemplate =
@"[{TimeStamp:yy-MM-dd HH:mm:ss} {Level}]{ApplicationName}:
{SourceContext}{NewLine}
Message:{Message}{NewLine}in method
{MemberName} at {FilePath}:{LineNumber}{NewLine}
{Exception}{NewLine}";
Приемник SQL Server нуждается в списке столбцов, идентифицированных с использованием типа
SqlColumn
. Добавьте показанный далее код для конфигурирования столбцов базы данных:
private static readonly ColumnOptions ColumnOptions = new ColumnOptions
{
AdditionalColumns = new List<SqlColumn>
{
new SqlColumn {DataType = SqlDbType.VarChar, ColumnName = "ApplicationName"},
new SqlColumn {DataType = SqlDbType.VarChar, ColumnName = "MachineName"},
new SqlColumn {DataType = SqlDbType.VarChar, ColumnName = "MemberName"},
new SqlColumn {DataType = SqlDbType.VarChar, ColumnName = "FilePath"},
new SqlColumn {DataType = SqlDbType.Int, ColumnName = "LineNumber"},
new SqlColumn {DataType = SqlDbType.VarChar, ColumnName = "SourceContext"},
new SqlColumn {DataType = SqlDbType.VarChar, ColumnName = "RequestPath"},
new SqlColumn {DataType = SqlDbType.VarChar, ColumnName = "ActionName"},
}
};
Замена стандартного средства ведения журнала вариантом Serilog представляет собой процесс из трех шагов. Первый шаг — очистка существующего поставщика, второй — добавление Serilog в
HostBuildern
третий — завершение конфигурирования Serilog. Добавьте новый метод по имени ConfigureSerilog
, который является расширяющим методом для IHostBuilder
:
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(
Поделиться:
Популярные книги
Гарем вне закона 18+
1. Гарем вне закона
Фантастика:
фэнтези
юмористическая фантастика
6.73
рейтинг книги
Разведчик. Заброшенный в 43-й
Героическая фантастика
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.93
рейтинг книги
Академия
2. Клан Волка
Фантастика:
боевая фантастика
5.40
рейтинг книги
Проклятый Лекарь IV
4. Каратель
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Третий. Том 3
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
СД. Том 17
17. Сердце дракона
Фантастика:
боевая фантастика
6.70
рейтинг книги
Чемпион
3. Мания крафта
Фантастика:
фэнтези
рпг
5.38
рейтинг книги
Краш-тест для майора
3. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
эро литература
6.25
рейтинг книги
На границе империй. Том 7. Часть 3
9. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.40
рейтинг книги
Случайная жена для лорда Дракона
Фантастика:
юмористическая фантастика
попаданцы
5.00
рейтинг книги
Не грози Дубровскому! Том II
2. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон устанавливает правила
6. Закон сильного
Старинная литература:
прочая старинная литература
5.00
рейтинг книги
Возвращение
5. Другая сторона
Фантастика:
боевая фантастика
6.23
рейтинг книги
Кодекс Охотника. Книга XXV
25. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25