- PR -

ASP.NETでログファイルの作成

1
投稿者投稿内容
hit
常連さん
会議室デビュー日: 2004/04/01
投稿数: 44
投稿日時: 2005-10-20 14:35
お世話になります。
ASP.NETでWebアプリケーションを作成しています。

FileStreamを使用してWebからの特定の処理に関してログを残すという方法は、
現実的に可能なのか教えてください。
Webですので、当然、複数のクライアントから同時にアクセスされますので、
同時にテキストファイルに書き込もうとすると、当然、エラーになるのは、わかるのですが、
エラーになる場合は、リトライしたり、しばらく後に書き込むことで可能とも思われます。

データベースを使用すればよいのかもしれませんが、そこまでのことはしたくないのです。

それなりにリスクも少なく、手軽な、都合のよい方法はないものでしょうか?
よろしく、お願いします。
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-10-20 14:47
引用:

FileStreamを使用してWebからの特定の処理に関してログを残すという方法は、


ご要望のことは、Traceで可能かもしれないです。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdiagnosticstraceclasstopic.asp?frame=true

出力方法は、TraceListener クラスを継承したクラスにトレースリスナを切り替えて
変更できます。

デバッグに使いたいということなら
http://www.microsoft.com/japan/msdn/columns/asp/asp01252001.asp
http://ja.gotdotnet.com/QuickStart/aspplus/default.aspx?url=%2fquickstart%2faspplus%2fdoc%2ftracelogpage.aspx


_________________
たつごろー http://www.codeseek.net
MS MVP - Visual Developer Visual Basic (2005/08 - 2006/07)

[ メッセージ編集済み 編集者: たつごろー 編集日時 2005-10-20 14:48 ]
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2005-10-20 14:54
適当なApplication変数を作って、Application.Lockを使って排他制御を
すればいいんじゃないでしょうか。
Lockしている間にファイルへの書き込みを行えば、同時に書き込み処理が
はしることはありません。
ちょっと処理はもたつく可能性はありますが、簡単に扱えるということでは
これが一番楽かと。

なお、ファイルへの書き込みについてはそのための権限がASP.NETの
実行ユーザに必要なので、そのあたりを自分で設定できる、というのは
最低限の条件になります。
葉瀬崎浩樹
大ベテラン
会議室デビュー日: 2005/06/28
投稿数: 115
お住まい・勤務地: 兵庫県
投稿日時: 2005-10-20 15:18
どっとねっとふぁんさんと基本同じですけど。
ログクラスを自作する手もあります。

ファイルへの書込処理は、
スレッドセーフになるように、
Lockする必要があります。
ログファイル名は、
日付単位かユーザ単位で変えていけば
便利かも知れません。

自作のログクラスであれば、
出力先を切り替えて、
イベントログに吐くようにしたり、
やっぱりTrace出力にしたり、
出力情報を追加したり、
開発時と運用時で出力レベルを切り替えたり、
と、けっこう融通が利きました。

#文章修正・融通の利く例を追加

[ メッセージ編集済み 編集者: 葉瀬崎浩樹 編集日時 2005-10-20 15:31 ]
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-10-20 15:30
私なら EventLog に書きますね。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-10-25 18:47
 EventLog って、連続書き込みが出来ないことないですか?
引用:

EventLog.EntryWritten イベント

システムは、直前の書き込みイベントが少なくとも 5 秒前に発生した場合にだけ、 WriteEntry に応答します。




 私も、どっとねっとふぁんさんと同じ方法を使っています。


 あと、使ったことはないのですが、よく聞く名前として、log4net とか。
___________________________________________________________________
□ written by Jitta on 2005/10/20
□ Microsoft MVP :Visual Developer ASP/ASP.NET Oct.2004-Sept.2006
_________________
葉瀬崎浩樹
大ベテラン
会議室デビュー日: 2005/06/28
投稿数: 115
お住まい・勤務地: 兵庫県
投稿日時: 2005-10-26 09:41
引用:
Jittaさんの書き込み (2005-10-25 18:47) より:
 EventLog って、連続書き込みが出来ないことないですか?


おおっ。そうなんですか?
以前に関わったシステムでは、
Page_ErrorやAppication_Errorに飛び込んできた場合、
通常のログファイル出力とは別に、
追加でEventLogにも書き込むようにしました。

連続で例外が起きた場合。。大丈夫かな(-"-;
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-10-26 10:30
LoggingABという手も

市川さんの 連載
Enterprise Library概説
拡張性と使いやすさを併せ持つログ出力機能を実装しよう
―― ベスト・プラクティスを追求した「Logging & Instrumentation Application Block」 ――
http://www.atmarkit.co.jp/fdotnet/entlib/entlib04/entlib04_01.html

Enterprise Libraryの日本語情報はここからも
http://enterpriselibrary.jp/

_________________
たつごろー
codeseek
こみゅぷらす
1

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