DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ネットワークトレース出力に関して

環境/言語:[Windows7 VisualStudio2005 英語版 C# .NET2.0]
分類:[.NET]

2011/02/02(Wed) 13:18:23 編集(投稿者)

アリーと申します。

C#を用いて現在FTPを通信を行うシステムのログを、下記URLに記載されているネットワークトレースを用いて出力しています。
http://dobon.net/vb/dotnet/programing/networktrace.html#section3

ただ、毎日10回程度FTP通信が発生するため、ログが膨大な量になってしまい
いざエクセプションが発生したときに探し出すので一苦労です。

日付等にてログファイル名を変更したいのですが、上記ではApp.Configでの記載のためどうやればいいのか検討がつかないです。

どなたかお解りになる方がいらっしゃいましたら、ご教授願います。

よろしくお願いいたします。
> ただ、毎日10回程度FTP通信が発生するため、ログが膨大な量になってしまい
> いざエクセプションが発生したときに探し出すので一苦労です。

  私はLog4Netを使ってますので、Info/Warn/Errと区別して出力も
  できますし、出力先を分けることも可能です。またDBへの保存
  も設定だけでできてしまうので重宝してます。

  ログが膨大と言う部分は、すべて出力するからではないでしょう
  か?エラー等問題のある場合のみ出力するとか、出力する文字列
  に特殊な文字列を埋め込んで検索するようにすれば、素早く問題
  のログにアクセスできるかと考えます。

  再考する余地はあるのではないでしょうか?

> 日付等にてログファイル名を変更したいのですが、上記ではApp.Configでの記載のためどうやればいいのか検討がつかないです。

  Log4Netなら、自動的にファイルを日付単位で生成するような設定
  も可能ですので、より利便性の高いログ出力方式に変更されるの
  が得策かと。

以上。参考まで
■No28093に返信(オショウさんの記事)

オショウさん

ご回答ありがとうございます。

私の作成しているシステムでも、Log4Netを使っているのですがC#に返ってきた
エクセプションしか拾えないです。
(現状Log4Netで出力するログファイルとネットワークトレースにて出力するログファイル、2つのログファイルを出力している状態です。)

実際のFTPでのファイル取得に関しては
using (WebResponse res = req.GetResponse())
using (Stream st = res.GetResponseStream())
上記のメソッドにてファイル取得を行っているのですが、.Netにて内部処理の
詳細がわからないです、

そのため、ネットワークトレースを用いて下記のようなログを出力しています。
============ここからログ==============================================
System.Net Information: 0 : [5776] FtpWebRequest#34948909::GetResponse(Method=RETR.)
System.Net Information: 0 : [5776] Associating FtpWebRequest#34948909 with FtpControlStream#31914638
System.Net Information: 0 : [5776] FtpControlStream#31914638 - Sending command [TYPE I]
System.Net Information: 0 : [5776] FtpControlStream#31914638 - Received response [200 Type set to I]
System.Net Information: 0 : [5776] FtpControlStream#31914638 - Sending command [PASV]
System.Net Information: 0 : [5776] FtpControlStream#31914638 - Received response [227 Entering Passive Mode (aaa,bbb,ccc,ddd,eee,fff)]
System.Net Information: 0 : [5776] FtpControlStream#31914638 - Sending command [RETR ****.txt]
System.Net Information: 0 : [5776] FtpControlStream#31914638 - Received response [150 Opening BINARY mode data connection for ****.txt(100 bytes)]
System.Net Information: 0 : [5776] FtpControlStream#31914638 - Received response [226 Transfer complete]
System.Net Information: 0 : [5776] FtpWebRequest#34948909::(Releasing FTP connection#31914638.)
============ここまでログ==============================================

この内容をLog4Netにて出力することが可能であれば、問題も解決するのですが
やり方が良くわかりません。

そのため、ネットワークトレースのログのファイル名を変えれれば良いのかなと考えています。
> 上記のメソッドにてファイル取得を行っているのですが、.Netにて内部処理の
> 詳細がわからないです、

  問題の焦点が違いましたネ・・・

  私はFTPに関してソケット通信で直接行うクラスを自作
  してますので、通信時のいろいろなエラーは全て直接的に
  拾えます。ので、ネットワークトレースは使ってません。

  そういう事態ならば多分無理なので、トレース機能を使う
  しか無いのでは・・・と思います。

  ただ、インターネット上でいろいろ検索すればソケット通
  信でFTP行うソースコードは結構転がっているので、そ
  いうものを流用しては?

以上。参考まで
■No28090に返信(アリーさんの記事)

外していたら申し訳ありませんが、TraceListenerを自作することでできないでしょうか?

Writing custom .NET trace listeners - CodeProject
http://www.codeproject.com/KB/dotnet/customnettracelisteners.aspx
オショウさん
ありがとうございます。
FTPをソケット通信で行うのならば、トレースはあまり必要ないですね。

ただ、既存システムなのでソケット通信への変更をあまりしたくないという
しがらみがありまして・・・


管理人さん
ありがとうございます。
TraceListenerの自作ですか。
ここに記載する前段階でできるか考えていたのですが、知識が乏しいため少し断念しようとしていました。
教えていただきましたURLを元に理解して自作をしてみたいと思います。

DOBON.NET | プログラミング道 | プログラミング掲示板