Question

Lorsque vous vous connectez avec Log4Net, il est très facile de placer la classe qui a appelé le journal dans le fichier journal. Dans le passé, j'ai découvert que cela facilite grandement le traçage dans le code et l'observation du flux dans les classes. Dans Log4Net, j'utilise la propriété% logger dans le modèle de conversion comme suit:

<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />

Et cela me donne la sortie que je veux:

2008-09-19 15:40:26,906 [3132] ERROR <b>Log4NetTechDemo.Tester</b> [(null)] - Failed method

Vous pouvez voir dans la sortie que la classe qui a appelé le journal est Log4NetTechDemo.Tester, ce qui me permet de retrouver facilement l'erreur dans cette classe.

Dans le bloc Application de journalisation, je ne peux pas comprendre comment faire cela avec un simple appel au journal. Est-ce que quelqu'un sait comment cela peut être fait? Si tel est le cas, un exemple ou une procédure à suivre serait très utile.

Était-ce utile?

La solution

Ajoutez la méthode d'appel au dictionnaire ExtendedProperties de LogEntry; en supposant que vous n’ayez bien sûr pas supprimé les jetons ExtendedProperties du modèle de formatage.

Mettez quelque chose comme ceci dans un wrapper de journalisation:

public void LogSomething(string msg)
{
  LogEntry le = new LogEntry { Message = msg };
  le.ExtendedProperties.Add("Called from", new StackFrame(1).GetMethod().ReflectedType);
  Logger.Write(le);
}

L'appel à ceci produit quelque chose comme ceci à la fin du journal:

Extended Properties: Called from - LAB_Demo.Tester

Autres conseils

Nous n’avons pas trouvé de solution de facilité sans toucher à StackTrace. S'il s'agit d'une exception, nous en tirons simplement:

 StackTrace trace = new StackTrace(ex, true);
 StackFrame frame = trace.GetFrame(0);

Pour les éléments bavards, nous écrivons simplement la chaîne. Nous avons un extrait capable de saisir le nom de la classe lors de l'insertion. Nous déclarons également la chaîne const avec le nom de la classe.

Pas joli, mais c'est le meilleur que nous ayons trouvé. J'espère que quelqu'un d'autre a une meilleure réponse dans ce fil:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top