0

50 ~ 100 台の Windows 7 ユーザー PC に多数のソフトウェア ツールがインストールされています。現在、これらのツールはすべて、警告、エラー、および情報メッセージを各 PC の tools.log ファイルに記録します。特定の PC で何が起こっているかを確認したい場合、ログ ファイルを取得する必要があります。すべてのユーザーのログ データを中央データベースに保存して、有用なクエリを実行できるようにしたいと考えています。また、特定の悲惨な状況 (たとえば、データベースの「挿入時」トリガーを使用して特定の状況をチェックするなど) について警告を受けたいと思います。

ログに書き込むソフトウェア ツールは、Windows バッチ ファイルと C++ または C# アプリです。2 つの方法でログに直接書き込むことができるように、API と小さなコマンドライン ツールが必要です。アプリから API を使用する方法と、次のような標準のバッチ ファイル構文を使用してログにパイプする方法です。

echo Something bad happened | log_tool

私の質問は次のとおりです。多くのコマンドをログに連続してエコーする必要がある場合に、大幅な速度低下を引き起こさない簡単な方法は何ですか? たとえば、パイプごとにデータベース トランザクションが発生する場合は、遅すぎます。

ここで役立つ既存のソフトウェアはありますか? (たとえば、memcached-backed-by-a-shared-database タイプのようなものですか?)

4

1 に答える 1

1

これは正確な答えではないかもしれませんが、Windows イベント ログは、(私が思うに) やりたいことを正確に実行するように設計されています。

logevent.exe を呼び出すことにより、バッチ ファイルからイベント ログに書き込むことができます (最初にこれをインストールする必要がある場合があります)。

.Net の多くのロギング フレームワークの 1 つを使用して、イベント ログに書き込むことができます (log4Net が私のお気に入りです)。

イベント ログは適度なパフォーマンスを発揮するように設計されています。log4Net を使用すると、大量のログを処理する場合にログをバッチ処理できます。

イベント ログにはネットワーク経由でアクセスできます。これらのログを監視するために使用できるツールは多数あり、対応するワークフロー (Nagios、BigBrother、MS MOM) があります。

于 2012-10-16T11:56:25.917 に答える