Ich erkläre typischerweise die folgende in jeder Klasse:log4net-Strategie für named Logger?
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
und innerhalb jeder Klasse die statische Element verwenden auf verschiedenen Ebenen zu protokollieren (info, debug, etc.)
ich, dass irgendwo gesehen und haben Ich denke, dass das Setup flexibel genug ist, um nach Namespaces zu filtern und einzelne Typen zu protokollieren, wenn ich Probleme bei der Fehlerbehebung beheben möchte und was nicht.
Aber ich hatte selten diese "Ebene" der Feinprotokollierung zu verwenden. Also würde ich gerne sehen, was andere benutzen. Verwenden Sie das obige, da ich das Gefühl habe, dass viele genau das verwenden, oder erstellen Sie benannte Logger wie "debug", "trace", "error", "moduleA" usw. und teilen Sie den Logger unter verschiedenen Typen , Versammlungen?
Ausgezeichnet. Vielen Dank. – Chasler
Haben Sie einen Profiler auf diesem laufen? Die Ausführungsgeschwindigkeit dieser Bestie ist riesig. Und selbst wenn Sie den DEBUG-Protokollierungsgrad in der Produktion ändern wollten, entstehen Ihnen die gleichen Kosten. Ich kann den Punkt etwas sehen, wenn Sie wirklich den Methodennamen im Logger brauchen, aber dann wieder, wenn z. Ausnahmen auftreten, würden Sie diesen Namen in der Ausnahme stacktrace sowieso bekommen ... –
Ziemlich sicher, dass dies durch das neue CallerName-Attribut ersetzt wird - siehe http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices. callermembernameattribute% 28v = vs.110% 29.aspx – keithl8041