~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/trace.py

  • Committer: Martin Pool
  • Date: 2005-08-25 00:47:04 UTC
  • Revision ID: mbp@sourcefrog.net-20050825004704-e3c75123f29539bf
- expose 'find-merge-base' as a new expert command,
  to help in debugging merges

  move UnrelatedBranches exception into bzrlib.errors

Show diffs side-by-side

added added

removed removed

Lines of Context:
41
41
 
42
42
 
43
43
_file_handler = None
44
 
_stderr_handler = None
45
44
 
46
45
 
47
46
class QuietFormatter(logging.Formatter):
70
69
 
71
70
        return s
72
71
        
 
72
################
 
73
# configure default handler to stderr
 
74
 
 
75
_stderr_handler = logging.StreamHandler()
 
76
_stderr_handler.setFormatter(QuietFormatter())
 
77
 
 
78
if os.environ.get('BZR_DEBUG'):
 
79
    _stderr_handler.setLevel(logging.DEBUG)
 
80
else:
 
81
    _stderr_handler.setLevel(logging.INFO)
 
82
 
 
83
logging.getLogger('').addHandler(_stderr_handler)
73
84
 
74
85
 
75
86
 
79
90
_bzr_logger = logging.getLogger('bzr')
80
91
_bzr_logger.setLevel(logging.DEBUG) 
81
92
 
82
 
info = note = _bzr_logger.info
 
93
note =      _bzr_logger.info
83
94
warning =   _bzr_logger.warning
84
95
log_error = _bzr_logger.error
85
96
error =     _bzr_logger.error
117
128
 
118
129
 
119
130
 
120
 
def open_tracefile(tracefilename='~/.bzr.log'):
 
131
def open_tracefile(argv=[], tracefilename='~/.bzr.log'):
121
132
    # Messages are always written to here, so that we have some
122
133
    # information if something goes wrong.  In a future version this
123
134
    # file will be removed on successful completion.
143
154
        _file_handler.setLevel(logging.DEBUG)
144
155
        logging.getLogger('').addHandler(_file_handler)
145
156
 
 
157
        import bzrlib
 
158
        
 
159
        debug('bzr %s invoked on python %s (%s)'
 
160
              % (bzrlib.__version__,
 
161
                 '.'.join(map(str, sys.version_info)),
 
162
                 sys.platform))
 
163
 
 
164
        debug('  arguments: %r' % argv)
 
165
        debug('  working dir: ' + os.getcwdu())
146
166
    except IOError, e:
147
167
        warning("failed to open trace file: %s" % (e))
148
168
 
149
169
 
150
 
def log_startup(argv):
151
 
    import bzrlib
152
 
 
153
 
    debug('bzr %s invoked on python %s (%s)',
154
 
          bzrlib.__version__,
155
 
          '.'.join(map(str, sys.version_info)),
156
 
          sys.platform)
157
 
 
158
 
    debug('  arguments: %r', argv)
159
 
    debug('  working dir: %s', os.getcwdu())
160
 
 
161
170
 
162
171
def log_exception(msg=None):
163
172
    """Log the last exception into the trace file.
167
176
    """
168
177
    if msg == None:
169
178
        ei = sys.exc_info()
170
 
        msg = str(ei[1])
171
 
 
172
 
    if msg and (msg[-1] == '\n'):
173
 
        msg = msg[:-1]
 
179
        s = str(ei[1])
 
180
        if s[-1] == '\n':
 
181
            s = s[:-1]
 
182
        msg = s
174
183
        
175
184
    _bzr_logger.exception(msg)
176
 
 
177
 
 
178
 
 
179
 
def enable_default_logging():
180
 
    """Configure default logging to stderr and .bzr.log"""
181
 
    global _stderr_handler, _file_handler
182
 
 
183
 
    _stderr_handler = logging.StreamHandler()
184
 
 
185
 
    if not _file_handler:
186
 
        open_tracefile()                # also adds it
187
 
 
188
 
    debug_flag = False
189
 
    try:
190
 
        debug_flag = bool(os.environ['BZR_DEBUG'])
191
 
    except:
192
 
        pass
193
 
        
194
 
    if debug_flag:
195
 
        level = logging.DEBUG
196
 
        fmt = '%(levelname)8s: %(message)s'
197
 
        _stderr_handler.setFormatter(logging.Formatter(fmt))
198
 
    else:
199
 
        level = logging.INFO
200
 
        # show only summary of exceptions
201
 
        _stderr_handler.setFormatter(QuietFormatter())
202
 
 
203
 
    _stderr_handler.setLevel(level)
204
 
    _file_handler.setLevel(level)
205
 
 
206
 
    logging.getLogger('').addHandler(_stderr_handler)
207
 
 
208
 
 
209
 
 
210
 
def disable_default_logging():
211
 
    """Turn off default log handlers.
212
 
 
213
 
    This is intended to be used by the test framework, which doesn't
214
 
    want leakage from the code-under-test into the main logs.
215
 
    """
216
 
 
217
 
    l = logging.getLogger('')
218
 
    l.removeHandler(_stderr_handler)
219
 
    if _file_handler:
220
 
        l.removeHandler(_file_handler)