2

log4netを使用してアプリケーションをログに記録しようとすると、問題が発生します。私のアプリケーションは、WCFサービスとそれに接続するクライアントで構成されています。クライアント側でのロギングは問題ではなく、すべてが完全に機能します。

これが私のサーバーサイドの作り方です:

  • WCF dll。これには、サービスのコントラクトと基本実装(エラー処理を含む)が含まれています。実際の操作は別のビジネスレイヤーで行われ、実装によってキャッチされた(そしてFaultContractsを使用して返送された)必要な例外がスローされます。
  • データレイヤー(ここでは問題ありません)。
  • ラッパーログメソッドを含む「Utils」ライブラリ。

私のlog4net.configファイルは次のとおりです。

<?xml version="1.0" encoding="utf-8" ?>
<log4net debug="false">

  <appender name="TechnicalFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
    <param name="File" value="c:\\log\\technical.log"/>
    <param name="AppendToFile" value="true"/>
    <param name="RollingStyle" value="Date"/>
    <param name="DatePattern" value="'_'yyyyMMdd-HH"/>
    <layout type="log4net.Layout.PatternLayout,log4net">
      <param name="ConversionPattern" value="%d [%-5t] %-5p - %m%n"/>
    </layout>
  </appender>

  <root>
    <level value="ALL"/>
  </root>

  <logger name="TechnicalLog">
    <level value="ALL"/>
    <appender-ref ref="TechnicalFileAppender"/>
  </logger>

</log4net>

したがって、ビジネスレイヤーでエラーが発生すると、エラーがキャプチャされ、ログに記録され、FaultExceptionに変換されます。問題があります。ログファイルは作成されません。グーグルでいくつかの手がかりを見つけました(アクセス権は一般的ですが、ProcMonを使用しましたが、目的のファイルまたはディレクトリへの呼び出しが見つかりませんでした)。

私は今少し迷っています、私は何を試すべきかわかりません。

Visual Studioで「publish」コマンドを使用してサービスを公開しているので、サーバーにはアプリケーションディレクトリがあり、その中にsvcファイル、web.configファイル、そしてlog4netを含むすべてのdllを含むbinディレクトリがあります。 dll、およびlog4net.config。その構成ファイルをアプリケーションのルートにコピーしようとしましたが、成功しませんでした。

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] また、ステートメントをWCFのAssemblyInfo.cs(元々はUtilsのAssemblyInfo.csにありました)に配置しようとしました が、成功しませんでした。

助けてくれてありがとう、どんなアイデアでも大歓迎です!

4

1 に答える 1

1

log4net が構成ファイルを見つけられないことは確かです。

私は同じ問題を抱えていました.log4net構成ファイルへのフルパスを含むweb.configファイルにアプリケーション設定を入れることで解決したと思います. 私のラッパーでは、ConfigureAndWatchlog4netがまだ構成されていない場合にメソッドを呼び出して、log4netが構成されていることを確認しました。

または、単純に log4net 構成を web.config ファイルにコピーすることもできます (ただし、実行中のシステムのログ設定を変更する機能が失われるため、私はそうしません)。その場合、これを AssemblyInfo.cs (または必要に応じて他のファイル) に追加する必要があります。

[assembly: log4net.Config.XmlConfigurator()]

それでも問題が解決しない場合は、内部デバッグを有効にすることをお勧めします。

于 2010-09-13T09:40:27.360 に答える