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
121
122
# FIXME: clearing the ui and then going through the abstract logging
122
123
# framework is whack; we should probably have a logging Handler that
123
124
# deals with terminal output if needed.
124
ui.ui_factory.clear_term()
126
bzrlib.ui.ui_factory.clear_term()
125
127
_bzr_logger.info(*args, **kwargs)
128
130
def warning(*args, **kwargs):
129
ui.ui_factory.clear_term()
132
bzrlib.ui.ui_factory.clear_term()
130
133
_bzr_logger.warning(*args, **kwargs)
469
def _dump_memory_usage(err_file):
472
fd, name = tempfile.mkstemp(prefix="bzr_memdump", suffix=".json")
473
dump_file = os.fdopen(fd, 'w')
474
from meliae import scanner
475
scanner.dump_gc_objects(dump_file)
476
err_file.write("Memory dumped to %s\n" % name)
478
err_file.write("Dumping memory requires meliae module.\n")
479
log_exception_quietly()
481
err_file.write("Exception while dumping memory.\n")
482
log_exception_quietly()
484
if dump_file is not None:
490
def _qualified_exception_name(eclass, unqualified_bzrlib_errors=False):
491
"""Give name of error class including module for non-builtin exceptions
493
If `unqualified_bzrlib_errors` is True, errors specific to bzrlib will
494
also omit the module prefix.
496
class_name = eclass.__name__
497
module_name = eclass.__module__
498
if module_name in ("exceptions", "__main__") or (
499
unqualified_bzrlib_errors and module_name == "bzrlib.errors"):
501
return "%s.%s" % (module_name, class_name)
504
473
def report_exception(exc_info, err_file):
505
474
"""Report an exception to err_file (typically stderr) and to .bzr.log.
523
492
return errors.EXIT_ERROR
524
493
elif isinstance(exc_object, MemoryError):
525
494
err_file.write("bzr: out of memory\n")
526
if 'mem_dump' in debug.debug_flags:
527
_dump_memory_usage(err_file)
529
err_file.write("Use -Dmem_dump to dump memory to a file.\n")
530
495
return errors.EXIT_ERROR
531
496
elif isinstance(exc_object, ImportError) \
532
497
and str(exc_object).startswith("No module named "):