~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/trace.py

  • Committer: Martin Pool
  • Date: 2005-11-23 05:55:20 UTC
  • mto: (1185.33.43 bzr.dev)
  • mto: This revision was merged to the branch mainline in revision 1512.
  • Revision ID: mbp@sourcefrog.net-20051123055520-5f2ad7ea4cca7adb
Remove need for BZR_DEBUG to get debug info in trace file.

Clean up new trace file.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# This program is free software; you can redistribute it and/or modify
2
 
# it under the terms of the GNU General Public License as published by
3
 
# the Free Software Foundation; either version 2 of the License, or
4
 
# (at your option) any later version.
5
 
 
6
 
# This program is distributed in the hope that it will be useful,
7
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
8
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9
 
# GNU General Public License for more details.
10
 
 
11
 
# You should have received a copy of the GNU General Public License
12
 
# along with this program; if not, write to the Free Software
13
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
14
 
 
 
1
# Copyright (C) 2005, Canonical Ltd
15
2
 
16
3
"""Messages and logging for bazaar-ng.
17
4
 
43
30
form.
44
31
"""
45
32
 
46
 
 
47
33
# TODO: in debug mode, stderr should get full tracebacks and also
48
34
# debug messages.  (Is this really needed?)
49
35
 
50
 
# TODO: When running the test suites, we should add an additional
51
 
# logger that sends messages into the test log file.
52
 
 
53
36
# FIXME: Unfortunately it turns out that python's logging module
54
37
# is quite expensive, even when the message is not printed by any handlers.
55
38
# We should perhaps change back to just simply doing it here.
90
73
            s += '\n' + format_exception_short(record.exc_info)
91
74
        return s
92
75
        
93
 
 
94
 
 
95
 
 
96
 
################
97
76
# configure convenient aliases for output routines
98
77
 
99
78
_bzr_logger = logging.getLogger('bzr')
105
84
 
106
85
 
107
86
def mutter(fmt, *args):
108
 
    if (_trace_file is not None) and (not _trace_file.closed):
109
 
        try:
110
 
            if len(args) > 0:
111
 
                print >>_trace_file, fmt % args
112
 
            else:
113
 
                print >>_trace_file, fmt
114
 
        except TypeError:
115
 
            print fmt
116
 
            print args
117
 
            raise
 
87
    if _trace_file is None:
 
88
        return
 
89
    if hasattr(_trace_file, 'closed') and _trace_file.closed:
 
90
        return
 
91
    if len(args) > 0:
 
92
        print >>_trace_file, fmt % args
 
93
    else:
 
94
        print >>_trace_file, fmt
118
95
debug = mutter
119
96
 
 
97
 
120
98
def _rollover_trace_maybe(trace_fname):
121
99
    import stat
122
100
    try:
143
121
        LINE_BUFFERED = 1
144
122
        tf = codecs.open(trace_fname, 'at', 'utf8', buffering=LINE_BUFFERED)
145
123
        _bzr_log_file = tf
146
 
        if os.fstat(tf.fileno())[stat.ST_SIZE] == 0:
 
124
        if tf.tell() == 0:
147
125
            tf.write("\nthis is a debug log for diagnosing/reporting problems in bzr\n")
148
126
            tf.write("you can delete or truncate this file, or include sections in\n")
149
127
            tf.write("bug reports to bazaar-ng@lists.canonical.com\n\n")
198
176
    _stderr_handler = logging.StreamHandler()
199
177
    _stderr_handler.setFormatter(QuietFormatter())
200
178
    logging.getLogger('').addHandler(_stderr_handler)
201
 
    if os.environ.get('BZR_DEBUG'):
202
 
        level = logging.DEBUG
203
 
    else:
204
 
        level = logging.INFO
205
179
    _stderr_handler.setLevel(logging.INFO)
206
180
    if not _file_handler:
207
181
        open_tracefile()
208
182
    _trace_file = _bzr_log_file
209
183
    if _file_handler:
210
 
        _file_handler.setLevel(level)
211
 
    _bzr_logger.setLevel(level) 
 
184
        _file_handler.setLevel(logging.DEBUG)
 
185
    _bzr_logger.setLevel(logging.DEBUG) 
 
186
 
212
187
 
213
188
def disable_default_logging():
214
189
    """Turn off default log handlers.