1
# Copyright (C) 2005-2011 Canonical Ltd
1
# Copyright (C) 2005-2010 Canonical Ltd
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
116
122
# FIXME: clearing the ui and then going through the abstract logging
117
123
# framework is whack; we should probably have a logging Handler that
118
124
# deals with terminal output if needed.
119
ui.ui_factory.clear_term()
126
bzrlib.ui.ui_factory.clear_term()
120
127
_bzr_logger.info(*args, **kwargs)
123
130
def warning(*args, **kwargs):
124
ui.ui_factory.clear_term()
132
bzrlib.ui.ui_factory.clear_term()
125
133
_bzr_logger.warning(*args, **kwargs)
136
@deprecated_function(deprecated_in((2, 1, 0)))
137
def info(*args, **kwargs):
138
"""Deprecated: use trace.note instead."""
139
note(*args, **kwargs)
142
@deprecated_function(deprecated_in((2, 1, 0)))
143
def log_error(*args, **kwargs):
144
"""Deprecated: use bzrlib.trace.show_error instead"""
145
_bzr_logger.error(*args, **kwargs)
148
@deprecated_function(deprecated_in((2, 1, 0)))
149
def error(*args, **kwargs):
150
"""Deprecated: use bzrlib.trace.show_error instead"""
151
_bzr_logger.error(*args, **kwargs)
128
154
def show_error(*args, **kwargs):
129
155
"""Show an error message to the user.
446
def _dump_memory_usage(err_file):
449
fd, name = tempfile.mkstemp(prefix="bzr_memdump", suffix=".json")
450
dump_file = os.fdopen(fd, 'w')
451
from meliae import scanner
452
scanner.dump_gc_objects(dump_file)
453
err_file.write("Memory dumped to %s\n" % name)
455
err_file.write("Dumping memory requires meliae module.\n")
456
log_exception_quietly()
458
err_file.write("Exception while dumping memory.\n")
459
log_exception_quietly()
461
if dump_file is not None:
467
def _qualified_exception_name(eclass, unqualified_bzrlib_errors=False):
468
"""Give name of error class including module for non-builtin exceptions
470
If `unqualified_bzrlib_errors` is True, errors specific to bzrlib will
471
also omit the module prefix.
473
class_name = eclass.__name__
474
module_name = eclass.__module__
475
if module_name in ("exceptions", "__main__") or (
476
unqualified_bzrlib_errors and module_name == "bzrlib.errors"):
478
return "%s.%s" % (module_name, class_name)
481
473
def report_exception(exc_info, err_file):
482
474
"""Report an exception to err_file (typically stderr) and to .bzr.log.
500
492
return errors.EXIT_ERROR
501
493
elif isinstance(exc_object, MemoryError):
502
494
err_file.write("bzr: out of memory\n")
503
if 'mem_dump' in debug.debug_flags:
504
_dump_memory_usage(err_file)
506
err_file.write("Use -Dmem_dump to dump memory to a file.\n")
507
495
return errors.EXIT_ERROR
508
496
elif isinstance(exc_object, ImportError) \
509
497
and str(exc_object).startswith("No module named "):