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にありました)に配置しようとしました
が、成功しませんでした。
助けてくれてありがとう、どんなアイデアでも大歓迎です!