Maison  >  Article  >  cadre php  >  Comment implémenter la journalisation des opérations d'ajout, de suppression, de modification et de requête dans ThinkPHP 5.1

Comment implémenter la journalisation des opérations d'ajout, de suppression, de modification et de requête dans ThinkPHP 5.1

PHPz
PHPzoriginal
2023-04-11 09:15:57968parcourir

ThinkPHP est un framework de développement PHP très populaire. Il fournit une variété de fonctions puissantes et prend en charge un développement rapide. Parmi eux, CRUD (CRUD) est une opération de base indispensable dans le développement web. Afin de mieux suivre le fonctionnement de l'application, il est très important d'enregistrer les journaux d'opération. Dans cet article, nous explorerons comment implémenter la journalisation des opérations d'ajout, de suppression, de modification et de requête dans ThinkPHP 5.1.

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 notre application pour enregistrer divers événements tels que des messages d'erreur, des informations de débogage, des actions de l'utilisateur, etc. Le framework fournit quatre niveaux de journalisation : DEBUG, INFO, NOTICE et ERROR.

En plus des niveaux de journalisation intégrés, nous pouvons également définir nos propres niveaux de journalisation. Par exemple, nous pouvons créer un niveau de journalisation « 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 suivrons les étapes suivantes pour y parvenir :

  1. Créer un fichier de configuration personnalisé dans le répertoire de configuration
  2. Ajouter des champs de journal à la table de données
  3. Réécrire les méthodes d'ajout, de suppression et de modification dans le Modèle
  4. Enregistrer les journaux
  5. Créez un fichier de configuration personnalisé dans le répertoire de configuration Fichier de configuration

Tout d'abord, nous devons créer un fichier de configuration personnalisé 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.

  1. Ajouter des champs de journal à la table de données

Ensuite, nous devons ajouter quelques 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 :

  1. id (clé primaire à incrémentation automatique)
  2. user_id (ID utilisateur de l'opération, peut être vide)
  3. action (type d'opération, tel que ajouter, supprimer, modifier) ​​
  4. table_name (Nom de la table de données d'opération)
  5. data (données exploitées)
  6. created_at (heure de l'opération)
  7. 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 réaliser 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());
        }
    });
}

}

  1. 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.

Conclusion

Dans cet article, nous avons présenté comment enregistrer les opérations d'ajout, de suppression, de modification et de requête dans ThinkPHP 5.1. En comparant les méthodes de fonctionnement traditionnelles, nous avons constaté que l'utilisation de la journalisation permet de mieux suivre le fonctionnement de l'application et peut également être mieux combinée avec d'autres outils d'analyse. J'espère que les lecteurs pourront utiliser l'expérience de cet article pour améliorer la maintenabilité et l'évolutivité des applications.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn