Ich verwende normalerweise eine strukturierte Protokollierung mit NLOG für meine Projekte. Wenn ich denselben Namen des Kontext-, Scoped- und Inline -Eigenschaften verwende, werden verschiedene Eigenschaften durch Hinzufügen numerischer Suffix erzeugt.
Code: Select all
public void DoWithScope(string value)
{
using var scoped =
_logger.BeginScope(new Dictionary()
{
["myProperty"] = value
});
MyMethod(value);
}
public void DoWithotScope(string value)
{
MyMethod(value);
}
private void MyMethod(string value)
{
try
{
// do something
throw new Exception("Oops!");
}
catch (Exception ex)
{
_logger.LogError(ex, "The value \"{myProperty}\" causes an exception.", value);
}
}
< /code>
DoWithScope
Methode erstellt MyProperty und myproPry_1 . Inline -Eigenschaften gleichzeitig, da wir nicht wissen, ob das Zielfernrohr bereits MyProperty oder noch nicht enthält, aber wir möchten sicher sein, dass die Eigenschaft hinzugefügt wird. Außerdem können wir das Ziel mit Unterstützung der strukturierten Protokollierung und ohne einen mischen. Ist der Weg, um ein solches Verhalten zu implementieren, indem die Protokollierungskonfiguration geändert wird?