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> "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>