Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将自定义列添加到Azure表存储中的Serilog表以记录新信息_C#_Asp.net Mvc_Azure Table Storage_Serilog_Serilog Exceptions - Fatal编程技术网

C# 将自定义列添加到Azure表存储中的Serilog表以记录新信息

C# 将自定义列添加到Azure表存储中的Serilog表以记录新信息,c#,asp.net-mvc,azure-table-storage,serilog,serilog-exceptions,C#,Asp.net Mvc,Azure Table Storage,Serilog,Serilog Exceptions,可以在Azure表存储中的Serilog表中添加一个新列,用于记录新的额外字段,如accountID或登录名? 我认为可以添加一个新的列,但是可以像我为新添加的列所说的那样在Serilog中传递额外的字段吗?我如何在Startup.cs或web.config中定义它?谢谢 这是我在web.config中的配置: <add key="serilog:using:AzureTableStorage" value="Serilog.Sinks.AzureTableStorage" />

可以在Azure表存储中的Serilog表中添加一个新列,用于记录新的额外字段,如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" />

如果要在使用Serilog将日志写入azure表存储时添加其他属性,则需要调用
exprich.FromLogContext()
LogContext.PushProperty
。使用这两种方法,您的应用程序将向Azure表添加其他属性。有关更多详细信息,请参阅

比如说

  • 安装SDK
  • 代码

  • @Jawad我把我的启动配置放在这里,你能给我举一些实际的例子吗?我不想重复这项工作,用额外的字段丰富你的记录器。您将无法在LoggerConfiguration中执行此操作,因为加载它的帐户将不是您最希望捕获的用户ID。您还可以自定义BatchFormatter,以便在将事件json发送到AzureTablesStorage之前对其进行修改。请参阅@橡皮擦对您有用吗?
    Log.Logger = new LoggerConfiguration()
            .ReadFrom.AppSettings()
            .CreateLogger();
    
    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; }
    
        }