ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHP5.1で追加・削除・変更・動作ログ記録確認を実装する方法

ThinkPHP5.1で追加・削除・変更・動作ログ記録確認を実装する方法

WBOY
WBOY転載
2023-06-03 17:22:061570ブラウズ

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 に実装することができました。

以上がThinkPHP5.1で追加・削除・変更・動作ログ記録確認を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。