Шрифт:
Интервал:
Закладка:
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> "MSSqlServer": {</b>
<b> "schema": "Logging",</b>
<b> "tableName": "SeriLogs",</b>
<b> "restrictedToMinimumLevel": "Warning"</b>
<b> }</b>
},
<b> "ApplicationName": "AutoLot.Api",</b>
"AllowedHosts": "*"
}
// appsettings.development.json
{
"Logging": {
<b> "MSSqlServer": {</b>
<b> "schema": "Logging",</b>
<b> "tableName": "SeriLogs",</b>
<b> "restrictedToMinimumLevel": "Warning"</b>
<b> }</b>
},
"RebuildDataBase": false,
<b> "ApplicationName": "AutoLot.Api - Dev",</b>
"ConnectionStrings": {
"AutoLot": "Server=.,5433;Database=AutoLot;User ID=sa;Password=P@ssw0rd;"
}
}
// appsettings.production.json
{
"Logging": {
<b> "MSSqlServer": {</b>
- Понимание SQL - Мартин Грубер - Базы данных