簡體   English   中英

在特定列內寫入 Serilog ASP.NET MVC C#

[英]writing inside a specific column Serilog ASP.NET MVC C#

我正在使用 C# 在 ASP.NET MVC 中處理 Serilog。

我必須對日志類型進行分類,一種用於管理員級別,一種用於用戶級別。

我想根據 Microsoft 會員資格創建一個名為“角色”的額外列,其中包含 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);

我已經將該列添加到數據庫中

創建后如何寫入列?

ColumnOptions允許您告訴 SQL Server 接收器有關列的信息:

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

傳遞給logger配置方法:

.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>()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM