Comment diriger le EventLogTraceListener pour créer dans un journal spécifique
Question
L'auditeur suivant crée une entrée d'événement lorsque le Trace.WriteLine est appelé. Si la source n'existe pas, il créera dans le canal du journal par défaut qui est « Application ». Je veux spécifier un autre canal par défaut du journal, mais après avoir cherché pendant 45 minutes, je ne semble pas trouver la solution. Toutes les idées?
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<add name="myListener"
type="System.Diagnostics.EventLogTraceListener"
initializeData="Source">
</add>
</listeners>
</trace>
</system.diagnostics>
</configuration>
La solution
Je ne sais pas que vous pouvez par la config.
Bien que le EventLogTraceListener accepte les un eventlog différent en tant que paramètre dans le constructeur. Malheureusement, la classe est scellée de sorte que vous ne pouvez pas déduire simplement de lui et passer une valeur différente pour le constructeur.
Bien que vous puissiez suivre cette approche et construire votre propre classe (semble assez simple). Et puis faire référence à ce type dans votre config. http://weblogs.asp.net/psteele/archive/ 2006/02/23 / 438936.aspx
Autres conseils
Vous pouvez rejointoyer l'auditeur dans la première ligne de code.
Trace.Listeners["MyListener"].Attributes["EventLog"] = ConfigurationManager.AppSettings["MyCustomEventLogName"];
La valeur peut être stockée dans la section <appSettings>
du fichier de config, donc sa configuration encore basée:
<appSettings>
<add key="MyCustomEventLogName" value="CustomEventLogName" />
</appSettings>
Vous pouvez trouver une solution pour cela dans ce blog:
http://weblogs.asp.net/psteele/438936
Il fonctionne vraiment!