0

无法使用代码获取 Serilog > SourceContext 属性值。未针对日志表中的 Properties 字段生成 SourceContext 属性。尝试通过全局使用通用方法而不是在每个方法中获取 SourceContext 值来获取每个方法(即 api、服务、存储库)的 SourceContext 值。

使用以下代码行

appsetting.json

{  
"Serilog": {  
    "MinimumLevel": {  
        "Default": "Information",  
        "Override": {  
            "Microsoft": "Warning",  
            "System": "Warning"  
        }  
    },  
    "Enrich": [ "WithOpenTracingContext", "FromLogContext", "WithMachineName", "WithProcessId", "WithThreadId", "WithCorrelationId" ],  
    "WriteTo": [  
        {  
            "Name": "MSSqlServer",  
            "Args": {  



                "connectionString": "connection string",  
                "autoCreateSqlTable ": true,  
                "schemaName": "dbo",  
                "tableName": "LogTable",  
                "restrictedToMinimumLevel": "Information",  
                "batchPostingLimit": 50,  
                "period": "0.00:00:30",  
                "columnOptionsSection": {  
                    "removeStandardColumns": [ "LogEvent", "MessageTemplate" ],  
                    "customColumns": [  
                        {  
                            "ColumnName": "ClientIp",  
                            "DataType": "VARCHAR",  
                            "AllowNull": true,  
                            "DataLength": 50,  
                            "NonClusteredIndex": true  
                        },  
                        {  
                            "ColumnName": "UserId",  
                            "DataType": "INT",  
                            "AllowNull": true  
                        },  
                        {  
                            "ColumnName": "SessionId",  
                            "DataType": "VARCHAR",  
                            "AllowNull": true,  
                            "DataLength": 50,  
                            "NonClusteredIndex": true  
                        }  
                    ]  
                }  
            }  
        }  
    ],  
    "Using": [ "Serilog.Settings.Configuration" ]  
}  

配置.cs

public static IConfigurationRoot ConfigureSqlLogger(this IConfigurationRoot _configuration)  
    {  
        LoggerConfiguration config =   
            new LoggerConfiguration()  
                .Enrich.WithClientIp()  
                .Enrich.WithClientAgent()    
                  
                .ReadFrom.Configuration(_configuration);  

        Log.Logger = config.CreateLogger();  
        return _configuration;  
    }  

启动.cs

public Startup(IWebHostEnvironment environment)  
   {  
       try  
       {  
           var builder = new ConfigurationBuilder()  
           .SetBasePath(environment.ContentRootPath)  
           .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)  
           .AddJsonFile($"appsettings.{environment.EnvironmentName}.json", optional: true)  
           .AddEnvironmentVariables();  
           Configuration = builder.Build();  

           Configuration.ConfigureSqlLogger();  
       }  
       catch (Exception ex)  
       {  
           throw ex;  
       }  
   }  

在此处输入图像描述

在此处输入图像描述

4

0 回答 0