Toute ma logique de service est encapsulée dans la bibliothèque de classes. Lorsque j'instancie la bibliothèque de classes dans une application de ligne de commande, je reçois mes informations de trace. Lorsque j'instancie la classe dans un service Windows, je vois que mon écouteur de trace personnalisé a créé le répertoire des journaux et a démarré un fichier, mais il reste 0 KB.Service Windows .NET et écouteurs de suivi personnalisés
Les deux applications ont cela dans le .config:
<system.diagnostics>
<switches>
<add name="PTraceSwitch" value="Verbose" />
</switches>
<trace autoflush="true">
<listeners>
<add name="CustomXmlWriterTraceListener" />
<add name="MyServiceEventListener" />
<remove name="Default" />
</listeners>
</trace>
<sharedListeners>
<add
type="CustomUtilities.CustomXmlWriterTraceListener, CustomUtilities"
name="CustomXmlWriterTraceListener"
initializeData="Logs\MyService.svclog"
RollLogAtMidnight="True"
DateFormat="yyyy.MM.dd"
MaxFileSizeMB="1"
CompressLogsOlderThanTimeSpan="1.00:0:00"
DeleteLogsOlderThanTimeSpan="30.00:00:00"/>
<add name="MyServiceEventListener"
type="System.Diagnostics.EventLogTraceListener"
initializeData="MyServiceEventLog">
<filter type="System.Diagnostics.EventTypeFilter"
initializeData="Warning" />
</add>
</sharedListeners>
Vous manquez un 'Trace.Flush()'? –
Êtes-vous sûr que le fichier 'Logs \ MyService.svclog' est créé par rapport à votre exe? Les services commencent généralement par '\ Windows' ou' \ Windows \ System32' comme leur répertoire de travail. –
@ Rubens Farias, je l'ai mis à Autoflush, et Flush() n'a pas semblé aider – mittio