~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/trace.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2009-12-01 05:35:52 UTC
  • mfrom: (4792.6.2 trace-buffering)
  • Revision ID: pqm@pqm.ubuntu.com-20091201053552-yws5hsfrricui8b6
(mbp) remove extra buffer flushing on trace file

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006, 2007, 2008 Canonical Ltd
 
1
# Copyright (C) 2005, 2006, 2007, 2008, 2009 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
153
153
    _bzr_logger.error(*args, **kwargs)
154
154
 
155
155
 
156
 
_last_mutter_flush_time = None
157
 
 
158
 
 
159
156
def mutter(fmt, *args):
160
 
    global _last_mutter_flush_time
161
157
    if _trace_file is None:
162
158
        return
 
159
    # XXX: Don't check this every time; instead anyone who closes the file
 
160
    # ought to deregister it.  We can tolerate None.
163
161
    if (getattr(_trace_file, 'closed', None) is not None) and _trace_file.closed:
164
162
        return
165
163
 
182
180
    timestamp = '%0.3f  ' % (now - _bzr_log_start_time,)
183
181
    out = timestamp + out + '\n'
184
182
    _trace_file.write(out)
185
 
    # We flush if we haven't flushed for a few seconds. We don't want to flush
186
 
    # on every mutter, but when a command takes a while, it can be nice to see
187
 
    # updates in the debug log.
188
 
    if (_last_mutter_flush_time is None
189
 
        or (now - _last_mutter_flush_time) > 2.0):
190
 
        flush = getattr(_trace_file, 'flush', None)
191
 
        if flush is not None:
192
 
            flush()
193
 
        _last_mutter_flush_time = now
 
183
    # there's no explicit flushing; the file is typically line buffered.
194
184
 
195
185
 
196
186
def mutter_callsite(stacklevel, fmt, *args):
251
241
    _bzr_log_filename = _get_bzr_log_filename()
252
242
    _rollover_trace_maybe(_bzr_log_filename)
253
243
    try:
254
 
        bzr_log_file = open(_bzr_log_filename, 'at', 1) # line buffered
 
244
        bzr_log_file = open(_bzr_log_filename, 'at', buffering=0) # unbuffered
255
245
        # bzr_log_file.tell() on windows always return 0 until some writing done
256
246
        bzr_log_file.write('\n')
257
247
        if bzr_log_file.tell() <= 2: