Ich habe ASP.NET MVC-Anwendung und benutze Serilog für die Protokollierung Zweck. Ich habe serilog der enricher implementiertSerilog Enricher protokolliert keine Eigenschaften
public class HttpContextEnricher : ILogEventEnricher
{
LogEventProperty _cachedProperty;
public const string EnvironmentUserNamePropertyName = "MyUserName";
public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
{
if (HttpContext.Current == null)
return;
if (HttpContext.Current.User == null)
return;
if (HttpContext.Current.User.Identity == null)
return;
_cachedProperty = _cachedProperty ?? propertyFactory.CreateProperty(EnvironmentUserNamePropertyName, HttpContext.Current.User.Identity.Name);
logEvent.AddPropertyIfAbsent(_cachedProperty);
}
}
Erweiterungsmethode für jeden Protokolleintrag Benutzernamen des Benutzers anmelden
public static class HttpContextLoggerConfigurationExtensions
{
public static LoggerConfiguration WithUserName(
this LoggerEnrichmentConfiguration enrichmentConfiguration)
{
if (enrichmentConfiguration == null) throw new ArgumentNullException(nameof(enrichmentConfiguration));
return enrichmentConfiguration.With<HttpContextEnricher>();
}
}
es bei Anwendung konfiguriert starten
Log.Logger = new LoggerConfiguration()
.Enrich.WithUserName()
.ReadFrom.AppSettings()
.CreateLogger();
Hier ist meine App-Einstellungen
Dies ist, wie ich bin Anmeldung
Log.Information("Some information messaage");
ich WindowsEvent Sink verwende. Wenn ich die Anwendung ausführe, sehe ich, dass die Nachricht in der Ereignisquelle des Windows geloggt wird, jedoch hat das Protokoll keine Eigenschaft MyUserName
.
Ich bin mir nicht sicher, was ich hier vermisse?
Was passiert, wenn Sie einen Haltepunkt in Ihre 'Enrich()' Methode setzen? –
Ich sehe es gibt den gültigen Benutzernamen – LP13
Ah, kann es nur sein, dass die Ereignisprotokollsenke nicht alle Eigenschaften im Ereignis auflistet? Sie könnten versuchen, z. JSON in eine Datei und sehen, ob die Eigenschaften dort sind: https://github.com/serilog/serilog-formatting-compact#getting-started - HTH! –