4

Django の事前定義された (ユーザー名、IP アドレス) イベントと事前定義されていない (任意のコードで必要に応じて生成できる) イベントの両方を格納するための柔軟なイベント ログ プラットフォームを探しています。現在、ログファイルでいくつかやっているのですが、いろいろな解析スクリプトが必要になり、どうせDBになってしまうので、すぐにMongoDBやRedisなどのnosqlストアに放り込むことを検討しています。

アイデアは、たとえば、ユーザーが最も一般的に使用する IP アドレス、ユーザーが何らかのアクションを実行したことがあるかどうか、特定のイベントの結果を検索することなどを簡単にクエリできるようにすることです。

すでにこれを行っているものはありますか?

そうでない場合は、次のように考えています。

「イベント」は、リクエスト オブジェクトに添付されたディクショナリです。ミドルウェアはさまざまな部分 (ユーザー名、IP、SQL タイミング) を埋め、コードは必要に応じて残りを埋めます。

リクエストが処理された後、リクエスト後のフックがイベントを mongodb/redis にドロップし、さまざまなフィールドを正規化し (たとえば、username:ip アドレス カウンターをインクリメント)、残りをそのままドロップします。

知恵の言葉/これの一部/すべてを実行するコードへのポインタをいただければ幸いです。

4

3 に答える 3

3

mongodb -logプロジェクトは、やりたいことの基盤としておそらく使用できます。

于 2010-06-16T23:15:10.773 に答える
1

NoSQL DB で探していることを正確に実行するライブラリが存在するかどうかはわかりません。ただし、MongoDB バックエンドがリリースされたばかりで、Django の ORM で (限定的な方法で) 動作するようです。

リンクはこちらです。

おそらく、Django の組み込み ORM を利用する既存のロギング システムでこれを使用できますか? これが少しでも役立つことを願っています。

于 2010-05-25T19:51:00.103 に答える
0

この質問は何年も前に行われました。

ただし、同じ問題を探している人は、この回答から助けを得ることができます.

基本的に、Django にはLogEntry、管理アプリからすべてのユーザーのログを処理できるモデルがあります。

from django.admin.models import LogEntry

たとえば、これを使用して、django-rest-framework を使用してログ データを消費するエンドポイントを簡単に作成できます。このモデルを Meta.model = LogEntry および querysets = LogEntry.objects.all() としてビューセットに追加するだけです。

django で mongodb に接続するために、今日では と呼ばれる素晴らしいパッケージがありますdjongo

pip install djongo

また、settings.py に次のコードを追加できます。

# database setup to connect with mongodb.
DATABASES = {
    'default': {
        'ENGINE': 'djongo',
        'NAME': 'demodatabase',
        'CLIENT': {
           'host': 'your-db-host',
        }
    }
}

ログの一例を次に示します。

    {
        "id": 3,
        "action_time": "2021-09-24T17:19:51.252000Z",
        "object_id": "1",
        "object_repr": "Test title",
        "action_flag": 1,
        "change_message": "[{\"added\": {}}]",
        "user": 1,
        "content_type": 7
    },

ログを受信するためにmongodbのみを追加するなど、複数のデータベースを追加することもできます。どのデータベースが何をするかを処理するためにルーターを作成するだけで済みます。

より良い説明が得られるドキュメントを参照してください

于 2021-09-27T19:05:39.150 に答える