3

タイトルを長くしすぎたくありませんでしたが、この質問は特に、ローカルシステム(Vistaマシン上)として実行するように構成されたWindowsサービス(TopShelfのおかげで)としてNServiceBus汎用ホストを実行することについて言及しています。

前の質問で、PubSubサンプルをWindowsサービスとして実行するように調整して、サービスを簡単に停止および開始して、NServiceBusが想定どおりに動作していることを完全に証明できるようにした理由を説明します。

何らかの理由で、Log4Netにディスクに何かを記録させることができないので、これはLog4Net(初心者)構成の問題である可能性がありますか?

以下は、ある種のトレースを実行するためのブルートフォース攻撃です。これまでに取得したのは、次のように記述されたファイルだけです。

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>
4

2 に答える 2

7

デフォルトでは、NSB は構成ファイルからログ設定を取得しません。これを行うには、エンドポイント構成クラスに IConfigureLogging を実装します。

詳細はこちら:

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

お役に立てれば!

/アンドレアス

于 2009-09-29T07:51:39.100 に答える
1

ログに記録しようとしているときに、他の 2 つのアペンダーが例外をスローしているように見えます。あなたのパターンにあると思わ%property{NDC}れます - それらをパターンから削除して、もう一度やり直してください。

パターンに %property{X} が含まれている場合は、次のようなコードを使用してキー「X」でプロパティを設定する必要があります

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

ここで、ABC はLoggingEventインスタンス またはThreadContextまたはのいずれかGlobalContextです。

キー「NDC」でプロパティを設定したかどうかはわかりませんが、そうではないと思います...

于 2009-09-28T21:01:36.917 に答える