写在一个特定的列内.Net MVC c#

本文关键字:Net MVC 一个 | 更新日期: 2023-09-27 18:12:24

我在ASP的Serilog工作。。NET MVC和c#。

我有两种类型的日志,一种是管理员级别,一种是用户级别。

我想做一个额外的列称为"角色"包含1为管理员或2为用户根据微软会员资格。

我使用了以下代码:

string connectionString = ConfigurationManager.........;
            Log.Logger = new LoggerConfiguration()
                .MinimumLevel.Debug()
                .WriteTo.MSSqlServer(connectionString, "Logs")
                .Enrich.WithExceptionDetails()
                .Enrich.With<HttpRequestIdEnricher>()
                .Enrich.FromLogContext()
                .CreateLogger();
            Log.Information("Web4 starting");
            Log.Information("log location: {0}", AppDomain.CurrentDomain.BaseDirectory);

我已经将列添加到数据库

如何在创建列后写入列?

写在一个特定的列内.Net MVC c#

ColumnOptions允许您告诉SQL Server接收器有关列的信息:

var columnOptions = new ColumnOptions
{
  AdditionalDataColumns = new Collection<DataColumn>
  {
    new DataColumn {DataType = typeof (string), ColumnName = "Role"}
  }
};

传递给记录器配置方法:

.WriteTo.MSSqlServer(connectionString, "Logs", columnOptions: columnOptions)

需要将数据附加到每个日志事件:

class RoleEnricher : ILogEventEnricher
{
  public void Enrich(LogEvent logEvent, ILogEventPropertyFactory pf)
  {
    var role = // Get the role from your identity provider
    logEvent.AddOrUpdateProperty(pf.CreateProperty("Role", role));
  }
}

然后配置记录器以使用富集器:

.Enrich.With<RoleEnricher>()