Revision: 1444
http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1444&view=rev
Author: roman_yakovenko
Date: 2008-10-22 21:53:11 +0000 (Wed, 22 Oct 2008)
Log Message:
-----------
adding ability to write log to in memory string
setting propagate to False
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/_logging_/__init__.py
Modified: pyplusplus_dev/pyplusplus/_logging_/__init__.py
===================================================================
--- pyplusplus_dev/pyplusplus/_logging_/__init__.py 2008-10-21 20:29:42 UTC (rev 1443)
+++ pyplusplus_dev/pyplusplus/_logging_/__init__.py 2008-10-22 21:53:11 UTC (rev 1444)
@@ -9,19 +9,29 @@
import os
import sys
import logging
+import cStringIO
from multi_line_formatter import multi_line_formatter_t
-def _create_logger_( name ):
+def create_handler( stream=None ):
+ handler = None
+ if stream:
+ handler = logging.StreamHandler(stream)
+ else:
+ handler = logging.StreamHandler(stream)
+ handler.setFormatter( multi_line_formatter_t( os.linesep + '%(levelname)s: %(message)s' ) )
+ return handler
+
+def _create_logger_( name, stream=None ):
"""implementation details"""
logger = logging.getLogger(name)
- handler = logging.StreamHandler()
- handler.setFormatter( multi_line_formatter_t( os.linesep + '%(levelname)s: %(message)s' ) )
- logger.addHandler(handler)
+ logger.propagate = False
+ logger.addHandler( create_handler(stream) )
logger.setLevel(logging.INFO)
return logger
class loggers:
"""class-namespace, defines few loggers classes, used in the project"""
+ stream = None
file_writer = _create_logger_( 'pyplusplus.file_writer' )
"""logger for classes that write code to files"""
@@ -45,4 +55,10 @@
all = [ root, file_writer, module_builder, declarations ]
"""contains all logger classes, defined by the class"""
-
\ No newline at end of file
+
+ @staticmethod
+ def make_inmemory():
+ loggers.stream = cStringIO.StringIO()
+ for logger in loggers.all:
+ map( lambda h: logger.removeHandler( h ), logger.handlers[:] )
+ logger.addHandler( create_handler( loggers.stream ) )
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|