LoveRead.info » Книги » Разная литература » Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Книгу Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

177 0 18:04, 26-08-2023
Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен
26 август 2023

Книга Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен читать онлайн бесплатно без регистрации

В 10-м издании книги описаны новейшие возможности языка C# 9 и .NET 5 вместе с подробным "закулисным" обсуждением, призванным расширить навыки критического мышления разработчиков, когда речь идет об их ремесле. Книга охватывает ASP.NET Core, Entity Framework Core и многое другое наряду с последними обновлениями унифицированной платформы .NET, начиная с улучшений показателей производительности настольных приложений Windows в .NET 5 и обновления инструментария XAML и заканчивая расширенным рассмотрением файлов данных и способов обработки данных. Все примеры кода были переписаны с учетом возможностей последнего выпуска C# 9.

    1 ... 378 379 380 381 382 383 384 385 386 ... 407
    Перейти на страницу:
    class="p1">  [CallerLineNumber] int sourceLineNumber = 0)

    {

      var list = PushProperties(memberName, sourceFilePath, sourceLineNumber);

      _logger.LogDebug(message);

      foreach (var item in list)

      {

        item.Dispose();

      }

    }

    public void LogAppTrace(string message,

      [CallerMemberName] string memberName = "",

      [CallerFilePath] string sourceFilePath = "",

      [CallerLineNumber] int sourceLineNumber = 0)

    {

      var list = PushProperties(memberName, sourceFilePath, sourceLineNumber);

      _logger.LogTrace(message);

      foreach (var item in list)

      {

        item.Dispose();

      }

    }

    public void LogAppInformation(string message,

      [CallerMemberName] string memberName = "",

      [CallerFilePath] string sourceFilePath = "",

      [CallerLineNumber] int sourceLineNumber = 0)

    {

      var list = PushProperties(memberName, sourceFilePath, sourceLineNumber);

      _logger.LogInformation(message);

      foreach (var item in list)

      {

        item.Dispose();

      }

    }

    public void LogAppWarning(string message,

      [CallerMemberName] string memberName = "",

      [CallerFilePath] string sourceFilePath = "",

      [CallerLineNumber] int sourceLineNumber = 0)

    {

      var list = PushProperties(memberName, sourceFilePath, sourceLineNumber);

      _logger.LogWarning(message);

      foreach (var item in list)

      {

        item.Dispose();

      }

    }

    Конфигурация ведения журнала

    Начните с замены стандартного средства ведения журнала инфраструктурой Serilog, добавив новый класс по имени LoggingConfiguration в каталог Logging проекта AutoLot.Services. Модифицируйте операторы using и сделайте класс открытым и статическим:

    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(

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

        "MSSqlServer": {

          "schema": "Logging",

          "tableName": "SeriLogs",

          "restrictedToMinimumLevel": "Warning"

        }

      },

      "ApplicationName": "AutoLot.Api",

      "AllowedHosts": "*"

    }

    // appsettings.development.json

    {

      "Logging": {

        "MSSqlServer": {

          "schema": "Logging",

          "tableName": "SeriLogs",

          "restrictedToMinimumLevel": "Warning"

        }

      },

      "RebuildDataBase": false,

      "ApplicationName": "AutoLot.Api - Dev",

      "ConnectionStrings": {

        "AutoLot": "Server=.,5433;Database=AutoLot;User ID=sa;Password=P@ssw0rd;"

      }

    }

    // appsettings.production.json

    {

      "Logging": {

        "MSSqlServer": {

          "schema": "Logging",

          "tableName": "SeriLogs",

          "restrictedToMinimumLevel": "Warning"

        }

      },

      "RebuildDataBase": false,

      "ApplicationName": "AutoLot.Api - Prod",

      "ConnectionStrings": {

        "AutoLot": "It's

    1 ... 378 379 380 381 382 383 384 385 386 ... 407
    Перейти на страницу:
    1. Жалоба
    Отзывы - 0

    Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


    Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

    • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
    • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
    • 3. Просьба отказаться от нецензурной лексики.
    • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

    Надеемся на Ваше понимание и благоразумие. С уважением, администратор LoveRead.info.


    Установить VPN и читай слушай бесплатно

    Новые отзывы

    1. Лариса Лариса04 июнь 12:43 Да, просто до слез похоже на сериал ,,Даррел,,... Смерть в райском уголке - Эмили Салливан
    2. Stmara Stmara02 июнь 22:44 Приятная история, чтобы скоротать вечер. Любимая книга из последних "Любовь со смертью", также очень понравилась -"Суженная... Сердце космического дракона - Ольга Вадимовна Гусейнова
    3. Alex Alex01 июнь 17:12 💩💩💩🖕🖕🖕🖕🖕🖕🖕... Игровой момент II - Александр Андреевич Бодров
    Все комметарии
    Новинки бесплатной онлайн библиотеки