4

log4netを構成し、ローカルマシンで正常に動作していますが、ホスト(godaddy)にデプロイすると、サイレントに失敗します。開発マシンとホストで同じデータベース/構成ファイルを使用しています。log4net参照がローカルをコピーするように設定されており、log4net.dll、.pdb、および.xmlがホストのビンに存在します。これはasp.netmvcアプリです。

編集:例外はスローされず、アプリケーションは期待どおりに実行されます(ロギングを除く)

これはSQLServer2005で実行されています。ウェブホストはIIS7です。

私の設定の顕著な詳細は次のとおりです。

<root>
  <level value="DEBUG" />
  <appender-ref ref="AdoNetAppender" />
</root>

<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
  <bufferSize value="1" />

  <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

誰かがチェックすることについて何かアイデアがありますか?

4

2 に答える 2

7

私の経験では、log4netは通常、内部エラーをすべて飲み込み、結果を生成しないログステートメントを生成します。

試してみたいのは、log4netの内部ロギングを有効にすることです。appSettingsこれを行うには、セクションに以下を追加します。

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

これにより、プロパティLogLog.InternalDebuggingがに設定されtrueます。log4netは、標準出力ストリームとエラーストリーム、および構成されたトレースリスナーにログを記録します。

次の設定を使用して、トレースに記録されたメッセージをキャプチャできます。

<system.diagnostics>
  <trace autoflush="false" indentsize="4">
    <listeners>
      <add name="myListener"
        type="System.Diagnostics.TextWriterTraceListener"
        initializeData="c:\TextWriterOutput.log" />
      <remove name="Default" />
    </listeners>
  </trace>
</system.diagnostics>

log4netによって内部的にログに記録されたすべてのメッセージはに表示されますTextWriterOutput.log。トレースリスナーを構成に追加したSecurityExceptionときにが表示される場合は、おそらくアプリプールIDに、指定された場所にファイルを作成するための十分な権限がありません(例:) c:\。別の場所を試すか、アプリプールIDに十分な権限を付与してください。

于 2010-08-22T20:11:22.497 に答える
1

SVNリポジトリhttp://svn.apache.org/viewvc/logging/log4net/trunk/からlog4netの最新ビルド(リビジョン1072765)をダウンロードして使用することで、この問題を解決できました。

どうやらこの問題はずっと前に修正されたようですが、log4net1.2.11がいつリリースされるかは誰にもわかりません。

于 2011-02-20T22:38:14.093 に答える