2016-10-10 1 views
2

Je travaille sur Serilog dans ASP.NET MVC avec C#.écrire à l'intérieur d'une colonne spécifique Serilog ASP.NET MVC C#

J'ai des types de journaux, un pour le niveau d'administrateur et un pour le niveau d'utilisateur.

Je veux faire une colonne supplémentaire appelée "Rôle" contient 1 pour l'administrateur ou 2 pour l'utilisateur en fonction du membre microsoft ship.

J'ai utilisé ce code:

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); 

je l'ai déjà ajouté la colonne dans la base de données

comment puis-je écrire dans la colonne après le créer?

Répondre

2

ColumnOptions vous permet de dire l'évier SQL Server autour de la colonne:

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

passé à la méthode de configuration de l'enregistreur:

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

Les données doivent être joints à chaque événement de journal:

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)); 
    } 
} 

Puis configurez l'enregistreur pour utiliser l'enricher:

.Enrich.With<RoleEnricher>() 
+0

Est-il possible d'accéder ou d'injecter HttpContext dans le RoleEnricher dans cette solution? J'essaie d'obtenir un userId du contexte, mais lui donne sa propre colonne. - Peut créer une nouvelle question si nécessaire, merci .. – ttugates