私はリモートマシンからイベントログ(アプリケーション)を読み込むアプリケーションに取り組んでいます。私は.netでEventLogクラスを使用していますが、その後ログエントリを反復処理しますが、これは非常に遅いです。場合によっては、40000以上のログエントリを持つマシンもあれば、そのエントリを繰り返し処理するのに数時間かかることもあります。 このタスクを実行する最も良い方法は何ですか?より速いまたは他の技術では、ネット内に他のクラスがありますか?リモートマシン上のイベントログを読み取る最も速い方法は何ですか?
答えて
たぶん、WMIはあなたを助けることができる:
たぶんリモートコンピュータは、コンピューティングの少しを行うことができること。このようにして、サーバーは関連情報のみを処理します。それはリモートコンピュータを使っていくつかの光フィルタリングを行う一種のクラスタであり、サーバは分析部分である。
powershell 2.0のリモーティング機能を試したことがありますか?これらを使用すると、リモートマシン上のコマンドレット(イベントログを読み取るコマンドレットなど)を実行し、呼び出しセッションに結果(オブジェクトとして)を返すことができます。
ログをファイルに保存してウェブアプリケーションに送信するマシンにプログラムを配置することはできますが、ローカルのループを行うことができますが、それを行う方法はわかりませんもし任意のコード:(
男、私はあなたの痛みを感じる。我々は我々のアプリで正確に同じ問題を持っていたが。
あなたのソリューションは、あなたが上で実行しているものをサーバーバージョンに応じて、ブランチとどのようなサーバーバージョンあなたを持っています"ターゲット"マシンが稼働しています。
VistaまたはWindows Server 2008の両方であれば、あなたは幸運です。 System.Diagnostics.Eventing.Reader.EventLogQuery
およびSystem.Diagnostics.Eventing.Reader.EventLogReader
である。これらは.net 3.5で新しく追加されました。
基本的には、XMLでクエリを作成し、リモートコンピュータ上で実行するために配布することができます。特定のタイプのイベント、または特定の時点の新しいイベントを検索しているだけかもしれません。リモートマシン上で検索が実行され、一致するイベントが返されます。新しいクラスは従来の.net 2.0よりはるかに高速ですが、VistaやWindows Server 2008でのみサポートされています。
ターゲットがVista/Win2008上にない場合は、rawをダウンロードしました。 evtファイルをリモートシステムから取得し、バイナリ形式でファイルを解析します。 link textを含む.evtファイル(Vista以前)のイベントログ形式に関するデータのいくつかのソース、およびcodeproject.comでリコールしたC#コードを含む記事があります。
VistaおよびWindows Server 2008マシンでは、新しい形式の新しい.evtx形式が使用されるため、すべてのバージョンで同じバイナリ解析方式を使用することはできません。しかし、新しいEventLogQueryクラスとEventLogReaderクラスは非常に速く、必要ないでしょう。これで、組み込みのクラスを使用するだけでスピードが向上しました。
イベントログリーダーは非常に遅いです...遅すぎます。 WTF Microsoft?
LogParser 2.2を使用する - インターネット上でC#とLogParserを検索する(またはコマンドラインからlog parserコマンドを使用する)ことができます。私はすでに他の人が貢献している作品を複製したくありません。
ログをEVTXファイルとしてエクスポートすることによって、リモートシステムからログをプルします。私はリモートシステムからファイルをコピーします。このプロセスは本当に速いです。地球上に広がるネットワークであっても(ログをネットワークリソースにエクスポートすることに問題がありました)いったんローカルにしたら、検索と処理を行うことができます。
EVTXを持っている理由はいくつかあります。なぜ私たちがこれを行うのか理由はわかりません。
次は、ログのコピーをEVTXとして保存するコードの実際の例です。 (注:「device」はネットワークホスト名またはIPです。「LogName」は必要なログの名前です。 outputPathOnRemoteSystemは、 "c:¥temp¥%hostname%。%LogName%。%YYYYMMDD_HH.MM%.evtx"などのリモートコンピュータ上のパスです。
static public bool DumpLog(string device, string LogName, string outputPathOnRemoteSystem, out string errMessage)
{
bool wasExported = false;
string errorMessage = "";
try
{
System.Diagnostics.Eventing.Reader.EventLogSession els = new System.Diagnostics.Eventing.Reader.EventLogSession(device);
els.ExportLogAndMessages(LogName, PathType.LogName, "*", outputPathOnRemoteSystem);
wasExported = true;
}
catch (UnauthorizedAccessException e)
{
errorMessage = "Unauthorized - Access Denied: " + e.Message;
}
catch (EventLogNotFoundException e)
{
errorMessage = "Event Log Not Found: " + e.Message;
}
catch (EventLogException e)
{
errorMessage = "Export Failed: " + e.Message + ", Log: " + LogName + ", Device: " + device;
}
errMessage = errorMessage;
return wasExported;
}
良い説明/例はMSDNにあります。
EventLogSession session = new EventLogSession(Environment.MachineName);
// [System/Level=2] filters out the errors
// Where "Log" is the log you want to get data from.
EventLogQuery query = new EventLogQuery("Log", PathType.LogName, "*[System/Level=2]");
EventLogReader reader = new EventLogReader(query);
for (EventRecord eventInstance = reader.ReadEvent();
null != eventInstance;
eventInstance = reader.ReadEvent())
{
// Output or save your event data here.
}
古いコードで5〜20分待っているとき、これは10秒以内に行います。
- 1. リモートマシンでファイルを読み込む最も速い方法
- 2. ファイルからStringを読み取る最も速い方法は何ですか?
- 3. Javaのテキストファイルから読み込む最も速い方法は何ですか?
- 4. ファイルを上書きする最も速い方法は何ですか?
- 5. デスクトップをストリーミングする最も速い方法は何ですか?
- 6. タイプをチェックする最も速い方法は何ですか?
- 7. Javaで大きな数値の表を読み書きする最も速い方法は何ですか?
- 8. Font Awesomeを読み込むのが最も速いのは何ですか?
- 9. C++でファイルを読み込む際にエンディアンを切り替える最も速い方法は何ですか?
- 10. PHPはライブRSSフィードを読み込み、最も速い方法です。
- 11. ファイルの読み取り速度を上げる方法は?
- 12. iOSで最も速い描画方法は何ですか?
- 13. デバイス間で最も速い通信方法は何ですか?
- 14. iOSで圧縮画像を読み込む最も速い方法は何ですか?
- 15. ファイルを行単位で読み込む最も速い方法は何ですか?
- 16. Javaは、txtファイルから読み取る最も速いクラスです。
- 17. 最新のWindows上でHWNDに描画する最も速い方法は何ですか?
- 18. Log4Netログファイルからエラーメッセージを読み取る最も良い方法
- 19. Pythonで何千ものJSONファイルを読み込むための最も速い方法
- 20. 最も速い読み取り応答を得るためのインデックスを作成する最良の方法は何ですか?
- 21. データをディスクに書き込んでそこから読み取る最も良い方法は何ですか?
- 22. ファイルの長さを読み取る最速の方法C#
- 23. IDでXMLノードを取得する最も速い方法は
- 24. リモートマシンからファイルを読み取る
- 25. Javaでは、システム時間を得る最も速い方法は何ですか?
- 26. HBaseからデータを抽出する最も速い方法は何ですか
- 27. Qt - 書き込み速度 - Qtでファイルを書き込む最も速い方法は何ですか?
- 28. Rのデータセットを更新する最も速い方法は何ですか?
- 29. std :: stringのサイズを変更する最も速い方法は何ですか?
- 30. UIViewの背景を実装する最も速い方法は何ですか?
イベントログ項目を読み込む最良の方法は何か分かりませんが、アーキテクチャの再考をお勧めします。他のいくつかのロギング技術を使用する必要があります!私はエンタープライズライブラリロギングアプリケーションブロックを使用したいと思います。その後、簡単にDBにログインすることができます(イベントログにもログインできます)。その後、DBに対して簡単にクエリを実行できます。 –
私はイベントログにログインしていません。イベントログに記録する複数のアプリケーションがあり、Myアプリケーションはソースコードとイベントコードに基づいてイベントログを検索し、その情報を取得します。 – Kapil