Pregunta

No quería hacer el título demasiado largo, pero esta pregunta se refiere específicamente a la ejecución de un anfitrión NServiceBus genérico como un servicio de Windows (gracias a TopShelf) configurados para ejecutarse como sistema local (en una máquina de Vista)

En una pregunta anterior explico por qué decidí adaptar la muestra PubSub para ejecutarse como un servicio de Windows para que pueda detener e iniciar el servicio para demostrar plenamente a mí mismo que NServiceBus estaba haciendo lo que tenía que hacer con facilidad .

Por alguna razón no puedo conseguir Log4net que entrar nada en el disco, por lo que este podría bien ser sólo un Log4net (novato) problema de configuración?

A continuación es mi intento de fuerza bruta para obtener algún tipo de trazado que va - todo lo que estoy haciendo hasta ahora es writen archivos de la siguiente manera:

  

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: "queue@machine" 
       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>
¿Fue útil?

Solución

NSB no recogerá la configuración del registro de los archivos de configuración por defecto. Para ello implementar IConfigureLogging en su clase de configuración de punto final.

Más información aquí:

http://tech.groups.yahoo.com/group/nservicebus/ mensaje / 3655

Espero que esto ayude!

/ Andreas

Otros consejos

Parece como si sus otros dos appenders están lanzando excepciones al intentar registrar. Sospecho que la %property{NDC} en sus patrones - eliminarlas del patrón y vuelve a intentarlo

.

Si su patrón contiene% propiedad {X} entonces usted necesita para establecer una propiedad con la tecla "X" utilizando código como

ABC.Properties["X"] = /* some value */

donde ABC es o bien un ejemplo LoggingEvent o ThreadContext o GlobalContext.

No sé si ha establecido propiedades con la tecla "NDC", pero sospecho que no ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top