Добавьте настраиваемый столбец в таблицу Serilog в Azure Table Storage для регистрации новой информации - PullRequest
1 голос
/ 17 июня 2020

Можно добавить новый столбец в Таблицу Serilog в Azure Хранилище таблицы для регистрации нового дополнительного поля, такого как accountID или логин? Я думаю, что можно добавить новый столбец, но можно передать дополнительные поля в Serilog, как я уже сказал, для новых добавленных столбцов? Как я могу определить это в Startup.cs или web.config? Спасибо

Это моя конфигурация в web.config:

<add key="serilog:using:AzureTableStorage" value="Serilog.Sinks.AzureTableStorage" />
    <add key="serilog:write-to:AzureTableStorageWithProperties.connectionString" value="DefaultEndpointsProtocol=https;AccountName=MyAccountName;AccountKey=MyAccountKey;EndpointSuffix=core.windows.net" />
    <add key="serilog:write-to:AzureTableStorage.formatter" value="Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact" />
    <add key="serilog:write-to:AzureTableStorageWithProperties.storageTableName" value="Serilog" />

конфигурация startup.cs:

Log.Logger = new LoggerConfiguration()
        .ReadFrom.AppSettings()
        .CreateLogger();

1 Ответ

0 голосов
/ 19 июня 2020

Если вы хотите добавить дополнительные свойства при записи журнала в хранилище таблиц azure с помощью Serilog, вам необходимо вызвать Enrich.FromLogContext() и LogContext.PushProperty. С помощью этих двух методов ваше приложение добавит дополнительные свойства в таблицу Azure. Дополнительные сведения см. В документе

Например,

  1. Установить SDK
Install-Package Serilog.Sinks.AzureTableStorage 
Install-Package Serilog.Enrichers.Thread
Код
static void Main(string[] args)
        {

            var storage =CloudStorageAccount.Parse("");
            string tableName = "log";



            var _log = new LoggerConfiguration()
                           .Enrich.FromLogContext()
                           .WriteTo.AzureTableStorageWithProperties(storage, LogEventLevel.Information, storageTableName: tableName, propertyColumns: new string[] { "AccountId" , "Name" }) ;
            var logger = _log.CreateLogger();
            var exampleuser = new User { AccountId = 3, Name = "Allen" };
            LogContext.PushProperty("AccountId", exampleuser.AccountId);         
            logger.Information("{@User}", exampleuser);

            exampleuser = new User { AccountId = 1, Name = "Jim" };
            LogContext.PushProperty("AccountId", exampleuser.AccountId);
            logger.Information("{@User}", exampleuser);


            Console.ReadLine();



        }
 class User
    {
        public int AccountId { get; set; }
        public string Name { get; set; }

    }

enter image description here

...