Je ne voulais pas rendre le titre trop long, mais cette question fait spécifiquement référence à l'exécution d'un hôte générique NServiceBus en tant que service Windows (grâce à TopShelf) configuré pour fonctionner en tant que système local (sur une machine Vista)Comment activer la journalisation pour un hôte générique NServiceBus?
Dans a previous question J'explique pourquoi j'ai décidé d'adapter l'exemple PubSub pour qu'il fonctionne en tant que service Windows afin que je puisse facilement arrêter et démarrer le service pour me prouver complètement que NServiceBus faisait ce qu'il était censé faire.
Pour une raison quelconque, Log4Net ne peut pas enregistrer quoi que ce soit sur le disque, donc cela pourrait bien être un problème de configuration de Log4Net (débutant)?
ci-dessous est ma tentative force brute pour obtenir une sorte de traçage va - tout ce que je reçois est à ce jour les fichiers ECRIT comme suit:
C: \ logs \ < -GUID-> log4net. log
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" />
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, NServiceBus.Core"/>
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<!-- in order to configure remote endpoints use the format: "[email protected]"
input queue must be on the same machine as the process feeding off of it.
error queue can (and often should) be on a different machine.
-->
<MsmqTransportConfig
InputQueue="worker2"
ErrorQueue="error"
NumberOfWorkerThreads="1"
MaxRetries="5"
/>
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="Messages" Endpoint="messagebus" />
</MessageEndpointMappings>
</UnicastBusConfig>
<common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, NServiceBus.Core">
<arg key="configType" value="INLINE"/>
</factoryAdapter>
</logging>
</common>
<log4net debug="true">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="c:\logs\Subscriber2.log" />
<param name="AppendToFile" value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="2" />
<maximumFileSize value="100KB" />
<staticLogFileName value="true" />
<datePattern value="yyyyMMdd" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionpattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="EventLogAppender" type="log4net.appender.eventlogappender">
<applicationname value="Subscriber2.EndPointConfig_v1.0.0.0" />
<layout type="log4net.layout.patternlayout">
<conversionpattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="TraceAppender" type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
<appender-ref ref="EventLogAppender" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="TraceAppender" />
</root>
</log4net>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="c:\logs\log4net.log" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
Le compte d'utilisateur sous lequel le service s'exécute dispose-t-il des autorisations appropriées pour écrire dans c: \ logs? –
Le service Windows s'exécute en tant que 'Système local'. Comme décrit dans l'autre question, je ne trouve pas un moyen de l'installer pour fonctionner comme mon propre compte utilisateur. – rohancragg
MISE À JOUR: La solution correcte était que je devais ajouter l'interface de marqueur IWantCustomLogging à ma classe EndpointConfig. Maintenant, je me TROUVE TROP la journalisation. Mais je vais laisser la configuration ci-dessus comme un exemple de la façon d'obtenir la journalisation maximale et le suivi ... – rohancragg