1
# Copyright (C) 2005-2010 Canonical Ltd
1
# Copyright (C) 2005-2011 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
122
116
# FIXME: clearing the ui and then going through the abstract logging
123
117
# framework is whack; we should probably have a logging Handler that
124
118
# deals with terminal output if needed.
126
bzrlib.ui.ui_factory.clear_term()
119
ui.ui_factory.clear_term()
127
120
_bzr_logger.info(*args, **kwargs)
130
123
def warning(*args, **kwargs):
132
bzrlib.ui.ui_factory.clear_term()
124
ui.ui_factory.clear_term()
133
125
_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)
154
128
def show_error(*args, **kwargs):
155
129
"""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)
473
481
def report_exception(exc_info, err_file):
474
482
"""Report an exception to err_file (typically stderr) and to .bzr.log.
492
500
return errors.EXIT_ERROR
493
501
elif isinstance(exc_object, MemoryError):
494
502
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")
495
507
return errors.EXIT_ERROR
496
508
elif isinstance(exc_object, ImportError) \
497
509
and str(exc_object).startswith("No module named "):