Frappe Framework
Journalisation (Logging)
Chaque logger porte le module et le site. Le fichier va dans logs du bench et dans logs du site concerné.
Rôle
La journalisation suit ce qui se passe à l’exécution. Avec plusieurs sites sur un bench, retrouver un événement devient vite confus. Frappe reprend le module logging de Python, par bench et par site. En version 13, la rotation garde les 20 derniers fichiers plus le fichier courant, de 100 ko chacun, pour les journaux fournis. Le guide plus large est Journalisation.
Niveau et registre
frappe.log_level est le niveau des processus. frappe.utils.logger.set_log_level(level) le change et régénère les loggers. Les niveaux sont ceux de setLevel.
frappe.loggers est un dictionnaire : la clé est en général {module}-{site}, la valeur est le Logger. Un worker web qui sert docs.erpnext.com et frappeframework.com a, dans l’exemple, les clés frappe.web-docs.erpnext.com et frappe.web-frappeframework.com, toutes deux au niveau debug. Le balisage publié autour de ces objets est incomplet.
frappe.logger
frappe.logger(module, with_more_info, allow_site, filter, max_size, file_count) renvoie un logging.Logger. S’il n’existe pas, il est créé et ajouté à frappe.loggers.
| Argument | Rôle |
|---|---|
| module | Nom du logger et du fichier |
| with_more_info | Ajoute le Form Dict, utile pour une requête. Le titre publié coupe le nom en with_more*_*info. |
| allow_site | Nom de site explicite. True sans nom : Frappe devine le site. |
| filter | Fonction de filtre |
| max_size | Taille max d’un fichier, en octets |
| file_count | Nombre de fichiers gardés par la rotation |
L’appel frappe.logger("frappe.web").debug({...}) avec site, adresse, URL, méthode et code 200 s’écrit dans ./logs/frappe.web.log et ./sites/frappeframework.com/logs/frappe.web.log. La source indique que cet usage est celui de app.py, lignes 102 à 110 du commit cité.
Exemple
Une méthode en liste blanche update additionne une valeur au Single Value, champ counter. Le logger api est créé après set_log_level("DEBUG"), avec allow_site=True et file_count=50. Il note l’utilisateur et la valeur en info, le calcul en debug, puis la valeur écrite. Les lignes vont dans api.log.
Point d’attention
allow_site=True sans nom de site laisse Frappe choisir le dossier. file_count de l’exemple est 50, pas les 20 fichiers des journaux fournis.
