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

@ -1,3 +1,9 @@
2006-01-05 Richard Taylor <rjt-gramps@thegrindstone.me.uk>
* src/GrampsLogger/__init__.py: added package interface
* src/GrampsLogger/_ErrorReportAssistant.py: enable rotate_handler output
* src/GrampsLogger/_RotateHandler.py: enable rotate_handler output
* test/GrampsLogger/GtkHandler_Test.py: add test for rotate_handler output
2006-01-05 Richard Taylor <rjt-gramps@thegrindstone.me.uk> 2006-01-05 Richard Taylor <rjt-gramps@thegrindstone.me.uk>
* src/Assistant.py: added callback support for pages * src/Assistant.py: added callback support for pages
* src/GrampsLogger/_ErrorReportAssistant.py src/GrampsLogger/_ErrorView.py * src/GrampsLogger/_ErrorReportAssistant.py src/GrampsLogger/_ErrorView.py

View File

@ -89,7 +89,9 @@ class ErrorReportAssistant:
textview = gtk.TextView() textview = gtk.TextView()
self._error_details_text_buffer = textview.get_buffer() 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.add(textview)
sw.show() sw.show()
@ -117,7 +119,8 @@ class ErrorReportAssistant:
textview = gtk.TextView() textview = gtk.TextView()
self._sys_information_text_buffer = textview.get_buffer() 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.add(textview)
sw.show() 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] return [record for record in self._buffer[self._index:] + self._buffer[:self._index]
if record is not None] 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): def set_capacity(self,capacity):
""" """
Set the number of log records that will be stored. 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

View File

@ -12,29 +12,35 @@ logger = logging.getLogger('Gramps.Tests.GrampsLogger')
import const import const
const.rootDir = "../../src" const.rootDir = "../../src"
import _GtkHandler from GrampsLogger import GtkHandler, RotateHandler
class GtkHandlerTest(unittest.TestCase): class GtkHandlerTest(unittest.TestCase):
"""Test the GtkHandler.""" """Test the GtkHandler."""
def test_window(self): def test_window(self):
"""Test that the window appears.""" """Test that the window appears."""
rh = _GtkHandler.GtkHandler()
l = logging.getLogger("GtkHandlerTest")
l.setLevel(logging.ERROR)
l.addHandler(rh)
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)
l.info("An info message")
l.warn("A warn message")
l.debug("A debug message")
log_message = "Debug message" log_message = "Debug message"
try: try:
wibble wibble
except: except:
l.error(log_message,exc_info=True) l.error(log_message,exc_info=True)
l.removeHandler(rh)
gtk.main() gtk.main()