summaryrefslogtreecommitdiff
path: root/tracing.py
diff options
context:
space:
mode:
authorLars Wirzenius <liw@xander>2011-02-04 22:14:15 +0200
committerLars Wirzenius <liw@xander>2011-02-04 22:14:15 +0200
commit7c08f99a8f0e8d12afb8adb6966f4bb3262c8697 (patch)
tree9d682df5eb9a5be7068b874810b2fe9a601579b8 /tracing.py
parent4f855b71e11646da6d95bc2e081bd4083cf20a5a (diff)
downloadpython-tracing-7c08f99a8f0e8d12afb8adb6966f4bb3262c8697.tar.gz
Optimize speed a bit.
Diffstat (limited to 'tracing.py')
-rw-r--r--tracing.py22
1 files changed, 14 insertions, 8 deletions
diff --git a/tracing.py b/tracing.py
index 191564f..efef8e2 100644
--- a/tracing.py
+++ b/tracing.py
@@ -49,6 +49,7 @@ import traceback
trace_patterns = []
+trace_cache = set()
def trace_add_pattern(pattern):
@@ -57,16 +58,21 @@ def trace_add_pattern(pattern):
def trace_clear_patterns():
del trace_patterns[:]
+ trace_cache.clear()
-def trace(msg):
+def trace(msg, *args):
if trace_patterns:
frames = traceback.extract_stack(limit=2)
filename, lineno, funcname, text = frames[0]
- filename = os.path.basename(filename)
- for pattern in trace_patterns:
- if pattern in filename:
- logging.debug('%s:%s:%s: %s' %
- (filename, lineno, funcname, msg))
- break
-
+ log_it = filename in trace_cache
+ if not log_it:
+ for pattern in trace_patterns:
+ if pattern in filename:
+ log_it = True
+ trace_cache.add(filename)
+ break
+ if log_it:
+ filename = os.path.basename(filename)
+ msg = msg % args
+ logging.debug('%s:%s:%s: %s' % (filename, lineno, funcname, msg))