1. Introduction à la fonction de journalisation de ThinkPHP 5.1
Dans ThinkPHP 5.1, la fonction de journalisation a été intégrée. Nous pouvons l'utiliser dans nos applications pour enregistrer différents types d'événements, tels que des messages d'erreur, des informations de débogage et des opérations utilisateur. Quatre niveaux de journalisation sont fournis par le framework : DEBUG, INFO, NOTICE et ERROR.
En plus des niveaux de journalisation intégrés, nous pouvons également définir nos propres niveaux de journalisation. Nous pouvons donner un exemple en créant un niveau de journalisation nommé « CRUD » pour enregistrer les opérations d'ajout, de suppression, de modification et de requête.
Par défaut, les journaux seront enregistrés dans le répertoire des journaux sous le répertoire racine de l'application. Si vous devez modifier l'emplacement de stockage des journaux, vous pouvez le faire en modifiant le fichier de configuration. Les fichiers de configuration se trouvent généralement dans le répertoire de configuration de l'application.
2. Implémentation de l'enregistrement du journal des opérations d'ajout, de suppression, de modification et de vérification
Voyons comment implémenter l'enregistrement du journal des opérations d'ajout, de suppression, de modification et de vérification dans ThinkPHP 5.1. Nous allons l'implémenter selon les étapes suivantes :
Créer un fichier de configuration personnalisé dans le répertoire de configuration
Ajouter des champs de journal à la table de données
Réécrire les méthodes d'ajout, de suppression et de modification dans le Modèle
Enregistrer les journaux
Créer un fichier de configuration personnalisé dans le répertoire de configuration
Nous devons d'abord créer un fichier de configuration personnalisé et le placer dans le répertoire de configuration de l'application. Nous nommons ce fichier common_extra.php.
$config = [
'crud_log' => true, // 记录增删改查日志 'crud_ignore_fields' => ['create_time', 'update_time'] // 忽略日志记录的字段
];
Dans la configuration, nous définissons deux options. Le premier est crud_log, qui est utilisé pour activer ou désactiver la journalisation. Le second est crud_ignore_fields, qui est utilisé pour spécifier les champs qui ne sont pas enregistrés.
Ajouter des champs de journal à la table de données
Ensuite, nous devons ajouter des champs à la table de données pour enregistrer les opérations d'ajout, de suppression, de modification et de requête. Nous pouvons ajouter les champs suivants à chaque table de données :
id (clé primaire à incrémentation automatique)
user_id (ID utilisateur de l'opération, peut être vide)
action (type d'opération, tel que ajouter, delete, modifier )
table_name (nom de la table de données de l'opération)
data (données de l'opération)
created_at (heure de l'opération)
Réécrire les méthodes d'ajout, de suppression et de modification dans le Modèle
Maintenant, nous devons réécrire les méthodes d'ajout, de suppression et de modification dans le modèle pour implémenter la journalisation. Nous utiliserons la portée globale des requêtes pour y parvenir. Nous remplacerons les méthodes de création, de mise à jour et de suppression.
Dans chaque méthode, nous enregistrerons le type d'opération et les données correspondants. Nous écrirons ensuite les journaux dans le fichier journal en utilisant la classe log.
Voici un exemple de code :
namespace appcommonmodel;
use thinkModel;
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()); } }); }
}
Logging
Enfin, nous allons enregistrer. Dans l'exemple précédent, nous avons écrit le journal dans une table de données nommée « log ». Cependant, vous pouvez écrire les journaux dans un fichier, les envoyer à un serveur de journaux ou les envoyer ailleurs si vous le souhaitez.
Grâce aux étapes ci-dessus, nous avons implémenté avec succès la fonction de journalisation des opérations d'ajout, de suppression, de modification et de requête dans ThinkPHP 5.1.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!