4

Telnet 接続から受信したすべての受信メッセージをログに記録する必要があるアプリケーションを設計しています。テキストはほとんどプレーンですが、テキストの色と書式設定 (16 色、太字、下線など) を提供する ANSI タグを含めることができます。

ログをフォーマットして、フォーマット、日付/時刻、および後で他のメタデータを含むテキストを保存したいと考えています。私が最初に考えたのはすべて XML でしたが、これは後で高速な検索ツールを作成する能力に影響を与える可能性があります。私の現在のアイデアは、行番号で参照される、別の XML ファイルに保存されたメタデータを含む 1 つのファイルの日付/時刻 + テキストです。

これは良い解決策ですか?また、書式設定コマンドをどこにどのように保存すればよいですか? 元の ANSI タグはプレーンを混乱させますが、それらを 2 つの異なるファイルに含めるのは扱いにくい場合があります。

追加:これまでのいくつかの回答に感謝しますが、ほとんどの場合、メッセージはシステムメッセージではなく、人から人へのコミュニケーションになることに言及する必要があります. 一種のより原始的な IRC。どのメッセージが重要であったかを後で (メタデータを追加して) 決定するのはユーザー次第です。これは、フィルタリングまたは編集されたログが派生する可能性のあるレコード ログの未加工です。

4

5 に答える 5

2

私の最初の提案は、log4netのようなドロップインロギングツールを使用することです。これにより、フォーマットがはるかに自動化されます。

2つのファイルのルートを使用する場合(データベースがおそらくより良い選択であるというCraigに同意します)、1つのファイルをできるだけまばらにすることで、多くの苦痛を軽減できます。後で高速検索を行い、メタデータのみの形式を作成するのではなく、すべての情報(メタデータとデータ)を1か所に保持します。

于 2008-09-08T21:57:26.100 に答える
1

こんばんは

必ずフラット ファイルにログを記録し、後で XML に変換する munge スクリプトを追加します。

最初の提案は、すべての日付/時刻文字列が ISO 8601 形式、つまり YYYY-MM-DD hh:mm:ss であることを確認することです。

2 つ目は、例外、致命的、エラー、警告、情報などのカテゴリをログで目立たせることです。

次に、いくつかのvim構文ファイルを見て、重要なログエントリが本当に目立つように、ログ形式の新しい構文を作成してください.

標準の構文ファイルの 1 つを取得して、ログ文字列を処理するように変更することは、それほど難しいことではありません。

HTH。

乾杯、

ロブ

于 2008-09-08T21:19:09.310 に答える
0

「フェンスを分割」して、すべての分析/アーカイブログエントリ(Telnet通信など)にデータベースを使用すると言います。これにより、全文検索、列、およびデータを検索する簡単な方法の利点が得られます。

デバッグ/重大なエラータイプのログには、フラットファイル(またはファイルが大きすぎないようにするためのXML形式)を使用します。

データベース接続が切断されている場合、またはテーブル構造に問題がある場合、DBにログを記録しても意味がありません。

考えてみると、もう少し「軽量」なソリューションを探している場合は、SQLiteを使用してすべてのtelnetトラフィックをログに記録し、DB構造の利点を活用しながら、ファイルを利用できるようにすることができます。

log4netにもう1つうなずくと、彼らが持っているADOアペンダーでこれを簡単に達成できます。

于 2008-09-08T22:05:40.807 に答える
0

あなたが何を達成しようとしているのか正確にはわかりません。Telnetは通常、一度に1文字ずつのプロトコルと考えられているため、「着信メッセージ」とは、各文字がメッセージであることを意味しますか?または、ユーザーのセッション全体がメッセージですか?

私はいくつかの仮定をします。telnet経由でログインしているユーザーがいて、ログイン中にユーザーが行ったすべてのことをキャプチャしたいと考えています。後で、ユーザーが行ったこととそのユーザーが行った日時を関連付けることができるようにします。後で検索して、「ルートとして「rm*」を実行したのは誰か」を見つける必要があります。

各ユーザーのセッションを、ユーザーのログインとタイムスタンプを含む命名規則を使用して、個別のファイルとして保存します。

例:2008_09_08_14_52_07_nidonocu

ファイル内で、受信した各バイトをキャプチャします。ほとんどの場合、プレーンテキスト文字であると想定しています。

例えば

ls
cd www
ls
vi index.html
/copyright 2007
llllllllllllr8:wq
exit

8ビットのANSI文字もファイルに書き込みます。テキストエディタとgrepを使用して、基本的な監査と検索を実行できるはずです。実際に8ビットデータを読み取る必要がある場合は、バイナリファイルビューアを使用するか、後でさらに洗練されたものにすることができます。

バックアップ、アーカイブ、パージなどはすべて、通常のファイルシステムツールとスクリプトを使用して実行できます。

私の仮定が間違っている場合はお詫び申し上げます。

-
ブルース

于 2008-09-08T22:17:05.960 に答える
0

将来の検索と分析のためにログ情報を取得する場合は、おそらくデータベースの方が適しているでしょう。

あなたの解決策について。フラット ファイルは、データベースのスケーリングがはるかに優れているのに対し、まったくスケーリングしません。私もファイルを分割しません。それはスケーラビリティの問題を悪化させるだけです。フラット ファイルを使用する必要がある場合は、メタ データを csv (オーバーヘッドが少ない) に保持し、データを csv ファイルによってインデックス付けされた一連のファイルに保持することをお勧めします。そうすれば、すべてのデータがインデックス ファイルに影響を与えることはありません。ちょうど私の考え。

于 2008-09-08T21:16:28.490 に答える