J'ai simplement intégré un concept de journalisation pour mon système Grails et utilisé le mécanisme de filtrage pour consigner l'accès à mes contrôleurs et à mes actions. La bonne chose est que je peux définir un filtre pour tous les contrôleurs et les actions. Avec les classes de domaine, je ne connais que le concept d'intercepteur où je dois écrire un intercepteur pour chaque classe de domaine individuelle. Existe-t-il un concept similaire aux filtres pour les classes de domaine où je peux définir un intercepteur pour TOUTES les classes de domaine? Un grand merci à l'avance, Joerg.Filtres/intercepteurs ambiants pour les classes de domaine dans Gorm/Grails?
MISE À JOUR 1: Nous vous remercions pour l'astuce du plugin Audit Logging de Stefan. Le plugin Audit Logging ressemble à l'alternative la plus simple mais produit trop de lignes/logs à mon goût et n'utilise pas le système de journalisation grails/log4j.
Actuellement, mes exigences sont les suivantes:
Se connecter l'insert/mise à jour/supprimer pour toutes les classes de domaine (afin de se connecter uniquement les incidents, pas tous les changements à tous les domaines/colonne)
Connectez-vous au système de journalisation Grails (log4j) pour vous connecter à stdout, aux tables de base de données individuelles ou au courrier électronique (le niveau peut être, par exemple, INFO ou TRACE)
Connexion à une classe de domaine spécial (table db) afin de construire un visualizat de journal ion/système de gestion au-dessus de celui-ci (par l'intermédiaire du contrôleur Grails & actions). Ici, il serait bon de configurer si les journaux sont dans la même ou une autre base de données/grails-app (afin de diviser le système de gestion des journaux plus tard).
Pour autant que je connais l'exploitation forestière simple « de changement » peut se faire via:
déclarations de journaux individuels dans les classes de domaine (nécessite insertion/mise à jour/supprimer des événements dans toutes les classes de domaine)
Définir un « journal » superclasse qui hérite l'insert/mise à jour/supprimer des événements (il est difficile de faire insérer/mettre à jour indivudal/supprimer des événements dans des classes spéciales de domaine)
Définir un filtre pour tous les contrôleurs mais seulement sauvegarder/mise à jour/supprimer des actions (problème: n'enregistre pas les modifications aux classes de domaine sans un contrôleur ou si plusieurs classes de domaine sont touchés en une seule action)
Hope this helps autre. Néanmoins, Ai-je raté quelque chose?
Merci pour le conseil. Le plugin Audit Logging est capable de consigner les classes de domaine dans une table de base de données. Cependant, il semble que ce ne soit pas très facile à configurer. Je n'ai pas trouvé un moyen de configurer la base de données, les colonnes de table ou le niveau de journalisation. Par exemple, le plugin enregistre toutes les modifications apportées à chaque champ d'une classe de domaine, ce qui permet de l'utiliser comme système de gestion des versions (vous pouvez annuler chaque modification). Cependant, je n'ai besoin que de consigner la modification elle-même (insertion, mise à jour, suppression) et j'aimerais utiliser la journalisation log4j configurée (c'est-à-dire mes propres appenders aux bases de données, fichiers ou courriels). –
Une autre option surchargerait 'eventTriggeringInterceptor' dans resources.groovy. Par défaut, ce bean utilise ClosureEventTriggeringInterceptor qui délègue aux méthodes onXXX dans chacune des classes de domaine. En utilisant une classe personnalisée pour eventTriggeringInterceptor, vous pouvez gérer des événements au niveau global et non spécifiques à une classe de domaine. –
modifiant le commentaire d'hier: jetez un oeil à http://www.grails.org/plugin/falcone-util. Il fournit également un mécanisme d'événement pour les événements d'hibernation. –