0

シングル ユーザー コンソール アプリケーションを拡張して、複数のユーザーがアクセスできるようにしたいと考えています。主な目的は、ユーザーがシステムのステータスを確認し、単一のコマンドを発行することです。

すべてのログ記録は python のlogging モジュールによって実行されます。これは、1 人のユーザーが自分のコンソールで見たいログ レベルを指定できるため、うまく機能します。

ただし、複数のユーザーを許可する場合は、コンソールへのログ メッセージの単純な出力から抽象化する必要があります。私の質問は、ロギング モジュールの出力を別の場所にリダイレクトする最善の方法は何でしょうか? また、さまざまな詳細度の異なるユーザーを表示するために、個々のメッセージのログレベルを区別するにはどうすればよいですか? out と DEBUG/INFO プレフィックスを解析するだけでよいと思いますが、個々のメッセージに「タグを付ける」ためのより良い方法があるはずです。

詳細:

  • この時点で、ユーザーはローカル コンソールでメッセージを表示します
  • 将来的には、Web ベースのターミナル エミュレーションを介して AJAX 更新を使用して接続するクライアントが増えるでしょう (したがって、より多くの制御が必要になります)。
4

1 に答える 1

1

これはアーキテクチャの問題のように聞こえます。

私があなたの要件を正しく理解していれば、あなたが探しているものは次のようなものです.

  • テキスト ファイルに書き込む 1 つ以上の標準 Python ロガーを備えた Python ベースのシステムがあります。
  • さまざまなフィルタリング手法を使用してアクセス対象を制御し、複数のユーザーがこのログ データにリアルタイムでアクセスできるようにする必要があります。
  • この情報を分析して得た情報に基づいて、システムの動作を変更するためにシステムにコマンドを発行する必要がある場合があります。

この一連の要件を考慮して、次のアプローチをお勧めします。

  • ログ レコードを格納する集中データベースを作成します。
  • 標準の Python ロガーと、ロガーからデータベースに直接通信するカスタム ロギング ハンドラーを使用して、データベースにデータを入力します。
  • Web ベースのクライアントとデータベースの間を仲介するサーバー ベースのアプリケーションを開発します。
  • サーバー ロギング マネージャーと元のシステムの間でメッセージ キューを使用して、ユーザーからシステムへのコマンドのトランスポート メカニズムを提供します。

このシナリオを実現するために使用できる多くのパッケージとツールがありますが、主に Python ベースのソリューションが必要であると想定し、いくつかの具体的な提案を行います。

  • MongoDBをデータベースとして使用します。
  • MongoLogをロギング ハンドラーとして使用して、元のシステムと MongoDB データベースの間のインターフェースを作成します。
  • コア フレームワークとして Twisted を使用して、Python でサーバー アプリケーションを開発します。
  • ロギング マネージャーと元のシステムの間のメッセージ キューとしてZeroMQを使用します。

非 Python ベースのソリューションの使用を検討する準備ができている場合は、Meteor (Javascript ベースの環境) を使用して Web クライアント環境とログ マネージャーの両方を開発することをお勧めします。

于 2013-07-25T14:44:08.007 に答える