~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/trace.py

  • Committer: Andrew Bennetts
  • Date: 2007-08-30 08:11:54 UTC
  • mfrom: (2766 +trunk)
  • mto: (2535.3.55 repo-refactor)
  • mto: This revision was merged to the branch mainline in revision 2772.
  • Revision ID: andrew.bennetts@canonical.com-20070830081154-16hebp2xwr15x2hc
Merge from bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
56
56
 
57
57
from bzrlib.lazy_import import lazy_import
58
58
lazy_import(globals(), """
 
59
from cStringIO import StringIO
59
60
import errno
60
61
import logging
 
62
import traceback
61
63
""")
62
64
 
63
65
import bzrlib
64
 
from bzrlib.symbol_versioning import (deprecated_function,
65
 
        zero_nine,
66
 
        )
67
66
 
68
67
lazy_import(globals(), """
69
68
from bzrlib import debug
125
124
    #_trace_file.flush()
126
125
 
127
126
 
 
127
def mutter_callsite(stacklevel, fmt, *args):
 
128
    """Perform a mutter of fmt and args, logging the call trace.
 
129
 
 
130
    :param stacklevel: The number of frames to show. None will show all
 
131
        frames.
 
132
    :param fmt: The format string to pass to mutter.
 
133
    :param args: A list of substitution variables.
 
134
    """
 
135
    outf = StringIO()
 
136
    traceback.print_stack(limit=stacklevel + 1, file=outf)
 
137
    formatted_lines = outf.getvalue().splitlines()
 
138
    formatted_stack = '\n'.join(formatted_lines[:-2])
 
139
    mutter(fmt + "\nCalled from:\n%s", *(args + (formatted_stack,)))
 
140
 
 
141
 
128
142
def _rollover_trace_maybe(trace_fname):
129
143
    import stat
130
144
    try:
178
192
        warning("failed to open trace file: %s" % (e))
179
193
 
180
194
 
181
 
@deprecated_function(zero_nine)
182
 
def log_exception(msg=None):
183
 
    """Log the last exception to stderr and the trace file.
184
 
 
185
 
    The exception string representation is used as the error
186
 
    summary, unless msg is given.
187
 
 
188
 
    Please see log_exception_quietly() for the replacement API.
189
 
    """
190
 
    if msg:
191
 
        error(msg)
192
 
    log_exception_quietly()
193
 
 
194
 
 
195
195
def log_exception_quietly():
196
196
    """Log the last exception to the trace file only.
197
197