2

Azure ワーカー ロールで log4net を動作させるためのソリューションを必死に探しています。ゆっくりと私を夢中にさせます。

このブログhttp://blog.tylerdoerksen.com/2012/04/17/logging-in-azure-part-2table-storage (感謝) で説明されている手順に従いましたが、これは理にかなっているようで、log4net のログは機能します。次の条件で夢のように:

  1. エミュレーターでワーカー ロールをローカルで実行し、ログをローカル ストレージに永続化する
  2. エミュレーターで Worker ロールをローカルで実行し、ログをリモート ステージング Azure Table Storage に永続化する

Worker Role Service を Azure にデプロイすると、LogEntities テーブルに何も記録されません。このビット、信じられないほどイライラするのはこのビットです。

ワーカー ロール app.config で log4net デバッグを有効にしました。WADLogsTable に次のトレースが表示されます。

log4net: [TableStorageAppender] という名前のアペンダーをファイナライズしています。

以上です。追加してから通常見られると予想される他のlog4netデバッグ情報はありません

<appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
</appSettings>

私の Worker Role app.config に。

Worker Role オーバーライドされた Run メソッドで log4net を構成しています。

public override void Run()
 {
        try
        {

            XmlConfigurator.Configure();
            ILog Logger = LogManager.GetLogger(GetType());
            Trace.WriteLine("Trace: CheckInService.Run()");
            Logger.Info("log4net: CheckInService.Run()");
            //open the Service and do some other stuff etc 
            while (true)
            {
                Thread.Sleep(1800000);
            }
        catch (Exception ex)
        {
            Trace.TraceError("There was a problem opening the CheckInService");
        }
 }

これは私の完全なapp.configです

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" name="log4net" />
  </configSections>
  <appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
  </appSettings>
  <log4net>
    <appender type="Cloud.Services.Logging.TableStorageAppender, Cloud.Services.Logging" name="TableStorageAppender">
    </appender>
    <root>
      <level value="All" />
      <appender-ref ref="TableStorageAppender" />
    </root>
  </log4net>
  <system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
          name="AzureDiagnostics">
          <filter type="" />
        </add>
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

ロギング アペンダー (TableStorageAppender) の実装は独自のアセンブリ (Cloud.Services.Logging) にありますが、違いはないと思いますか?

誰でもアイデアはありますか?

4

2 に答える 2

0

Azure への発行時に Cloud.Services.Logging アセンブリが含まれていますか (CopyLocal = True)?

于 2013-03-14T14:27:45.960 に答える