Documentation Frappe Framework

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

2 min de lectureMis à jour le Source : docs.frappe.io

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.

ArgumentRôle
moduleNom du logger et du fichier
with_more_infoAjoute le Form Dict, utile pour une requête. Le titre publié coupe le nom en with_more*_*info.
allow_siteNom de site explicite. True sans nom : Frappe devine le site.
filterFonction de filtre
max_sizeTaille max d’un fichier, en octets
file_countNombre 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.

Journaux Python de Frappe par site | ERPNext Lab