用途:在 Frappe v14-v16 中实现日志记录、错误追踪与监控。
主要能力:提供三种机制。frappe.logger() 写入文件(轮转),用于应用日志、调试信息与审计;frappe.log_error() 写入数据库 Error Log DocType,可在管理界面查看并持久追踪;frappe.log()/frappe.errprint() 输出到 stderr 或请求作用域,仅用于快速调试,不可用于生产。
使用方式:应用日志用 logger = frappe.logger("my_app"),再调用 debug/info/warning/error/critical;日志位于 sites/{site}/logs/{module}.log,默认每文件 100KB、保留 20 个备份。错误追踪用 frappe.log_error(title="短描述", message=frappe.get_traceback(), reference_doctype=..., reference_name=...),务必使用关键字参数,Error Log 30 天后自动清理。未处理异常(HTTP 500+)会自动记录,但 AuthenticationError、CSRFTokenError、SecurityException、InReadOnlyMode 除外。
生产配置:site_config.json 中 enable_frappe_logger 记录 HTTP 请求,monitor 记录请求指标,logging=2 记录全部 SQL(仅调试)。环境变量 FRAPPE_STREAM_LOGGING=1 输出到 stderr,FRAPPE_SENTRY_DSN 启用 Sentry。
限制与反模式:不要用 print(),不要用 log_error 记普通信息,不要省略模块名,不要记录密码或令牌,不要在生产保留 logging=2。v15+ 新增 defer_insert、trace_id、错误元数据与增强 Sentry 集成。