1. ThinkPHP 5.1 のログ機能の紹介
ThinkPHP 5.1 には、ログ機能が組み込まれています。これをアプリケーションで使用して、エラー メッセージ、デバッグ情報、ユーザー アクションなどのさまざまな種類のイベントを記録できます。フレームワークでは、DEBUG、INFO、NOTICE、ERROR の 4 つのレベルのロギングが提供されます。
組み込みのログ レベルに加えて、独自のログ レベルを定義することもできます。例として、追加、削除、変更、クエリ操作を記録する「CRUD」という名前のログ レベルを作成します。
デフォルトでは、ログはアプリケーションのルート ディレクトリの下のログ ディレクトリに記録されます。ログの保存場所を変更する必要がある場合は、構成ファイルを変更することで変更できます。構成ファイルは通常、アプリケーションの config ディレクトリにあります。
2. 追加、削除、変更、確認操作のログ記録の実装
追加、削除、変更、確認操作のログ記録の実装方法を見てみましょう。 ThinkPHP 5.1 での動作を確認します。これを実現するには、次の手順に従います。
config ディレクトリにカスタム構成ファイルを作成します。
ログ フィールドをデータ テーブルに追加します。
モデルの追加、削除、変更メソッドを書き換える
ログを記録する
作成config ディレクトリのカスタム構成 ファイル
最初にカスタム構成ファイルを作成し、それをアプリケーションの config ディレクトリに配置する必要があります。このファイルに common_extra.php という名前を付けます。
$config = [
'crud_log' => true, // 记录增删改查日志 'crud_ignore_fields' => ['create_time', 'update_time'] // 忽略日志记录的字段
];
設定では、2 つのオプションを設定します。 1 つ目は crud_log で、ログのオンとオフを切り替えるために使用されます。 2 番目は crud_ignore_fields で、ログに記録されないフィールドを指定するために使用されます。
データ テーブルにログ フィールドを追加する
次に、追加、削除、変更を記録するために、データ テーブルにいくつかのフィールドを追加する必要があります。そしてクエリ操作。各データ テーブルに次のフィールドを追加できます:
id (自動インクリメント主キー)
user_id (操作ユーザー ID、空であること)
action (追加、削除、変更などの操作タイプ)
table_name (操作のデータ テーブル名)
data (操作データ)
created_at (操作時間)
追加、削除を書き換えるモデル内の追加、削除、および変更メソッド
#次に、ログを実装するために、モデル内の追加、削除、および変更メソッドを書き直す必要があります。これを実現するには、グローバル クエリ スコープを使用します。 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()); } }); }
}
ロギング
最後に、ログを記録します。前の例では、「log」という名前のデータ テーブルにログを書き込みました。ただし、必要に応じて、ログをファイルに書き込んだり、ログ サーバーに送信したり、他の場所に送信したりすることができます。
上記の手順により、追加、削除、変更、クエリ操作のログ機能を ThinkPHP 5.1 に実装することができました。
以上がThinkPHP5.1で追加・削除・変更・動作ログ記録確認を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。