- PR -

log4netの実行時にSystem.Io.FileLoadExceptionが出てしまう

1
投稿者投稿内容
mi_yan
会議室デビュー日: 2003/01/30
投稿数: 8
投稿日時: 2005-04-02 17:49
こんにちは。

log4netの1.2.9-betaをつかってログを出力しようとしているのですが、実行時に
"System.IO.FileLoadException: アクセスが拒否されました : 'log4net'"
というエラーが出力されてしまいます。。。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=18540&forum=7&3
の記事も読んで、web.configへの設定やソースへの記述は上手くいっていると思うのですが、
やはりアクセス権の問題なのでしょうか・・・・

http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_03/idnfw11_03_03.html
↑この辺りもチェックしたのですが、、、今ひとつ要領を得ません。

気になるのは、

「ソース エラー: 」の欄に[関連したソースの行はありません]というメッセージが出ています。。。


開発環境は

windowsXP Pro + IIS5.1
VisualStudio.NET2003
です。

何か知っている方いらっしゃいましたらご教授ください。
よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-04-02 18:38
こんにちは、じゃんぬ です。

引用:

やはりアクセス権の問題なのでしょうか・・・・



メンバを参照すると、もっと詳しいことがわかるかもしれません。
FileLoadException クラス



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
mi_yan
会議室デビュー日: 2003/01/30
投稿数: 8
投稿日時: 2005-04-03 12:02
じゃんぬさん、返信ありがとうございます。

とりあえず、Global.asaxのApplication_ErrorでExceptionを取れるようにしました。

FileLoadExceptionクラスのどのメンバ情報に注目したらよいでしょうか?

早速クイックウォッチで見てみましたが、折角助言を頂いたにも関わらず、イマイチ何が問題なのか整理できません。。。

*コンパイル時にはキチンとlog4net.dllはロードされているのですが・・・
tsune
会議室デビュー日: 2002/07/09
投稿数: 15
お住まい・勤務地: 兵庫県西宮市
投稿日時: 2005-04-04 19:17
こんにちは、中西と申します。

log4netの1.2.9-betaはまだ使用していないのですが、
log4net 1.2.0 Beta8の頃では、たしか
IISのログファイルを格納するディレクトリに対して、
セキュリティタブからASPNETアカウントで読み取り、書き込みの権限を
与えてやらないとログが書けなかったと記憶しています。

参考:
http://logging.apache.org/log4net/release/faq.html#HC-31578843
mi_yan
会議室デビュー日: 2003/01/30
投稿数: 8
投稿日時: 2005-04-08 11:42
中西さん
書き込みありがとうございます。

早速試してみます!
mi_yan
会議室デビュー日: 2003/01/30
投稿数: 8
投稿日時: 2005-04-10 18:31
中西さん

log4net 1.2.0 Beta8を利用するように変更しました。
また、ログを出力する対象のフォルダに対して、ASPNETユーザの書き込み・読み取りの権限を付与しました。

それでも、やはりFileLoadExceptionになってしまいます。

これは環境依存の何かしらの問題なのでしょうか???
まったくログが出力されずに閉口しております。。。

何か思い当たる事がありませんでしょうか??
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-04-11 11:50
回答ではありません。

原因の切り分けのために、別のアプローチを試してみてはいかが?

引用:

log4net 1.2.0 Beta8を利用するように変更しました。
また、ログを出力する対象のフォルダに対して、ASPNETユーザの書き込み・読み取りの権限を付与しました。


log4netを使わずに、直接コードからファイルを書き込んでみる。
他のユーザで書き込んでみる。
他のプログラムからlog4netを書き込んでみる。
おもいっきりセキュリティをゆるくしてみる。

など。

_________________
たつごろー
codeseek
こみゅぷらす
tsune
会議室デビュー日: 2002/07/09
投稿数: 15
お住まい・勤務地: 兵庫県西宮市
投稿日時: 2005-04-11 12:00
こんにちは、中西です。

私も、たつごろーさんがお勧めされているアプローチを試されてみるのをお勧めします。。
原因の切り分けをして、書き込めない条件を絞った上で原因究明をされるのがよいでしょう。

--
私が思いつく事といえば、WebアプリケーションのAssemblyInfoクラスに、以下の記述を書いてなければ、System.IO.FileNotFoundExceptionを吐くようです。しかし、これはlog4net関係のクラスに対しての例外だと思いますので、状況は異なるでしょう。

C#
[assembly: log4net.Config.DOMConfigurator(Watch=true)]

VB.NET
<Assembly: log4net.Config.DOMConfigurator(Watch:=True)>

あと、私の場合はWebアプリケーションのbinフォルダ内にlog4net.dllを配置するようにしています。

申し訳ありませんが、現状ではこれくらいしか思い浮かびません。


[ メッセージ編集済み 編集者: tsune 編集日時 2005-04-11 12:20 ]
1

スキルアップ/キャリアアップ(JOB@IT)