From abe821055ea7752ebd7735dfd5259ef020357b04 Mon Sep 17 00:00:00 2001 From: Jun Wu Date: Wed, 21 Apr 2021 09:23:20 -0700 Subject: [PATCH] tracing: add isenabled Summary: Expose Rust APIs to test if a callsite is enabled or not. Reviewed By: andll Differential Revision: D27867674 fbshipit-source-id: 0734b5ad6a65040f41a6f8b1bfc1e9a9109b9a8d --- eden/scm/edenscm/tracing.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/eden/scm/edenscm/tracing.py b/eden/scm/edenscm/tracing.py index 5c55e8f9cd..b82b2bc6fd 100644 --- a/eden/scm/edenscm/tracing.py +++ b/eden/scm/edenscm/tracing.py @@ -152,6 +152,32 @@ info_span = partial(span, level=LEVEL_INFO) warn_span = partial(span, level=LEVEL_WARN) error_span = partial(span, level=LEVEL_ERROR) + +# ---- test if a callsite is enabled ---- + + +def isenabled(level, name=None, target=None, depth=0): + """Test if a callsite is enabled.""" + frame = sys._getframe(1 + depth) + ident = (id(frame.f_code), frame.f_lineno) + callsite = _callsites.get(ident) + if callsite is None: + # Create the callsite. + # The field name "message" matches Rust tracing macros behavior. + fieldnames = [] + callsite = _insertcallsite( + ident, + _tracing.EventCallsite( + obj=frame, + name=name, + target=target, + level=level, + fieldnames=fieldnames, + ), + ) + return callsite.isenabled() + + # ---- local cache of callsites ---- _callsites = {}