enabled rotate_handler output.

svn: r5674
This commit is contained in:
Richard Taylor
2006-01-05 19:07:27 +00:00
parent ce52de5804
commit cfb8cc47a4
5 changed files with 83 additions and 12 deletions

View File

@@ -89,7 +89,9 @@ class ErrorReportAssistant:
textview = gtk.TextView()
self._error_details_text_buffer = textview.get_buffer()
self._error_details_text_buffer.set_text(self._error_detail)
self._error_details_text_buffer.set_text("\n".join(self._rotate_handler.get_formatted_log()) +
"\n\n" +
self._error_detail)
sw.add(textview)
sw.show()
@@ -117,7 +119,8 @@ class ErrorReportAssistant:
textview = gtk.TextView()
self._sys_information_text_buffer = textview.get_buffer()
self._sys_information_text_buffer.set_text(self._get_sys_information())
self._sys_information_text_buffer.set_text(
self._get_sys_information())
sw.add(textview)
sw.show()

View File

@@ -31,6 +31,16 @@ class RotateHandler(logging.Handler):
return [record for record in self._buffer[self._index:] + self._buffer[:self._index]
if record is not None]
def get_formatted_log(self):
"""
Return the log buffer after it has been formatted.
Returns a list of strings.
"""
return [self.format(record) for record in self._buffer[self._index:] + self._buffer[:self._index]
if record is not None]
def set_capacity(self,capacity):
"""
Set the number of log records that will be stored.

View File

@@ -0,0 +1,46 @@
"""
This package implements some extensions to the standard Python logging module that
support a consistent logging and bug reporting framework for Gramps.
The package provides:
GtkHandler - a log handler that will pop up a gtk dialog when a log message is
sent to it. The dialog offers the user the chance to start
ErrorReportAssistant to send a bug report.
RotateHandler - a log handler that just keeps a rotating buffer of the last N
log messages sent to it. This can be used with the GtkHandler to
pass a history of log messages to the ErrorReportAssistant.
Usage:
These handlers can be used in same way a all the other logger module handlers.
Simple example:
from GrampsLogger import GtkHandler, RotateHandler
rh = RotateHandler(capacity=20)
rh.setLevel(logging.DEBUG)
gtkh = GtkHandler(rotate_handler=rh)
gtkh.setLevel(logging.ERROR)
l = logging.getLogger("GtkHandlerTest")
l.setLevel(logging.DEBUG)
l.addHandler(rh)
l.addHandler(gtkh)
log_message = "Debug message"
try:
wibble
except:
l.error(log_message,exc_info=True)
gtk.main()
"""
from _GtkHandler import GtkHandler
from _RotateHandler import RotateHandler