ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHP 5.1 で追加、削除、変更、およびクエリ操作のログを実装する方法

ThinkPHP 5.1 で追加、削除、変更、およびクエリ操作のログを実装する方法

PHPz
PHPzオリジナル
2023-04-11 09:15:57968ブラウズ

ThinkPHP は非常に人気のある PHP 開発フレームワークで、さまざまな強力な機能を提供し、迅速な開発をサポートします。中でもCRUD(CRUD)はWeb開発において欠かせない基本操作です。アプリケーションの動作をより適切に追跡するには、動作ログを記録することが非常に重要です。この記事では、ThinkPHP 5.1 で追加、削除、変更、クエリ操作のログを実装する方法を説明します。

1. ThinkPHP 5.1 のログ機能の紹介

ThinkPHP 5.1 には、ログ機能が組み込まれています。これをアプリケーションで使用して、エラー メッセージ、デバッグ情報、ユーザー アクションなどのさまざまなイベントを記録できます。このフレームワークは、DEBUG、INFO、NOTICE、ERROR の 4 つのレベルのロギングを提供します。

組み込みのログ レベルに加えて、独自のログ レベルを定義することもできます。たとえば、ログ レベル「CRUD」を作成して、追加、削除、変更、クエリ操作を記録できます。

デフォルトでは、ログはアプリケーションのルート ディレクトリの下のログ ディレクトリに記録されます。ログの保存場所を変更する必要がある場合は、構成ファイルを変更することで変更できます。構成ファイルは通常、アプリケーションの config ディレクトリにあります。

2. 追加、削除、変更、クエリ操作のログ記録の実装

ThinkPHP 5.1 で追加、削除、変更、クエリ操作のログ記録を実装する方法を見てみましょう。これを実現するには、次の手順に従います。

  1. config ディレクトリにカスタム構成ファイルを作成します
  2. データ テーブルにログ フィールドを追加します
  3. 追加を書き換えます。モデル メソッドの削除と変更
  4. ロギング
  5. config ディレクトリにカスタム構成ファイルを作成する

まず、カスタム構成ファイルをアプリケーションの config ディレクトリ。このファイルに common_extra.php という名前を付けます。

$config = [

'crud_log' => true, // 记录增删改查日志
'crud_ignore_fields' => ['create_time', 'update_time'] // 忽略日志记录的字段

];

設定では、2 つのオプションを設定します。 1 つ目は crud_log で、ログのオンとオフを切り替えるために使用されます。 2 番目は crud_ignore_fields で、ログに記録されないフィールドを指定するために使用されます。

  1. データ テーブルにログ フィールドを追加する

次に、追加、削除、変更、およびクエリ操作を記録するために、いくつかのフィールドをデータ テーブルに追加する必要があります。各データ テーブルに次のフィールドを追加できます:

  1. id ​​(自動インクリメント主キー)
  2. user_id (操作ユーザー ID、空でも可)
  3. action (追加、削除、変更などの操作タイプ)
  4. table_name (操作のデータテーブル名)
  5. data (操作のデータ)
  6. created_at (操作時間)
  7. モデルの追加、削除、および変更メソッドを書き直す

次に、ログを実装するために、モデルの追加、削除、および変更メソッドを書き直す必要があります。これを実現するには、グローバル クエリ スコープを使用します。 create、update、delete メソッドをオーバーライドします。

各メソッドでは、対応する操作の種類とデータを記録します。次に、log クラスを使用してログをログ ファイルに書き込みます。

ここにサンプル コードをいくつか示します:

namespace app\common\model;

use think\Model;

class User extends Model
{

protected $table = 'users';

// 添加全局查询范围
protected static function init()
{
    // 添加操作记录
    static::beforeInsert(function ($item) {
        if (config('common_extra.crud_log')) {
            $item->user_id = session('user_id');
            $item->action = 'add';
            $item->table_name = $this->table;
            $item->data = json_encode($item->toArray(), JSON_UNESCAPED_UNICODE);
            $item->created_at = date('Y-m-d H:i:s', time());
            Db::table('log')->insert($item->toArray());
        }
    });

    // 修改操作记录
    static::beforeUpdate(function ($item) {
        if (config('common_extra.crud_log')) {
            $item->user_id = session('user_id');
            $item->action = 'update';
            $item->table_name = $this->table;
            $item->data = json_encode($item->toArray(), JSON_UNESCAPED_UNICODE);
            $item->created_at = date('Y-m-d H:i:s', time());
            Db::table('log')->insert($item->toArray());
        }
    });

    // 删除操作记录
    static::beforeDelete(function ($item) {
        if (config('common_extra.crud_log')) {
            $item->user_id = session('user_id');
            $item->action = 'delete';
            $item->table_name = $this->table;
            $item->data = json_encode($item->toArray(), JSON_UNESCAPED_UNICODE);
            $item->created_at = date('Y-m-d H:i:s', time());
            Db::table('log')->insert($item->toArray());
        }
    });
}

}

  1. ロギング

最後に、ロギングを行います。前の例では、「log」という名前のデータ テーブルにログを書き込みました。ただし、必要に応じて、ログをファイルに書き込んだり、ログ サーバーに送信したり、他の場所に送信したりすることができます。

上記の手順により、追加、削除、変更、クエリ操作のログ機能を ThinkPHP 5.1 に実装することができました。

結論

この記事では、ThinkPHP 5.1 での追加、削除、変更、クエリ操作のログを記録する方法を紹介しました。従来の操作方法を比較した結果、ログを使用するとアプリケーションの操作をより適切に追跡でき、分析のために他のツールとより適切に組み合わせることができることがわかりました。読者の皆様がこの記事の経験を活用して、アプリケーションの保守性とスケーラビリティを向上できることを願っています。

以上がThinkPHP 5.1 で追加、削除、変更、およびクエリ操作のログを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。