Чтение онлайн

на главную - закладки

Жанры

Язык программирования 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

{

}

}

Для

записи в различные целевые объекты для ведения журналов инфраструктура Serilog использует приемники (sink). Целевыми объектами, которые будут применяться для ведения журнала в приложениях ASP.NET Core, являются текстовый файл, база данных и консоль. Приемники типа текстового файла и базы данных требуют конфигурации — выходного шаблона для текстового файла и списка полей для базы данных. Чтобы настроить выходной шаблон, создайте следующее статическое строковое поле, допускающее только чтение:

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(

Поделиться:
Популярные книги

Газлайтер. Том 10

Володин Григорий
10. История Телепата
Фантастика:
боевая фантастика
5.00
рейтинг книги
Газлайтер. Том 10

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Звездная Кровь. Изгой

Елисеев Алексей Станиславович
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой

Хозяин Теней 4

Петров Максим Николаевич
4. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 4

Картофельное счастье попаданки

Иконникова Ольга
Фантастика:
фэнтези
5.00
рейтинг книги
Картофельное счастье попаданки

Экзорцист: Проклятый металл. Жнец. Мор. Осквернитель

Корнев Павел Николаевич
Фантастика:
фэнтези
героическая фантастика
5.50
рейтинг книги
Экзорцист: Проклятый металл. Жнец. Мор. Осквернитель

Доктора вызывали? или Трудовые будни попаданки

Марей Соня
Фантастика:
юмористическая фантастика
попаданцы
5.00
рейтинг книги
Доктора вызывали? или Трудовые будни попаданки

Метатель

Тарасов Ник
1. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель

Моя на одну ночь

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Моя на одну ночь

Чехов. Книга 2

Гоблин (MeXXanik)
2. Адвокат Чехов
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Чехов. Книга 2

Хозяин Теней 2

Петров Максим Николаевич
2. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 2

Сумеречный стрелок 7

Карелин Сергей Витальевич
7. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный стрелок 7

Жизнь под чужим солнцем

Михалкова Елена Ивановна
Детективы:
прочие детективы
9.10
рейтинг книги
Жизнь под чужим солнцем

Красноармеец

Поселягин Владимир Геннадьевич
1. Красноармеец
Фантастика:
боевая фантастика
попаданцы
4.60
рейтинг книги
Красноармеец