Added convenience mode to allow info( 'a', 1, 'b' )
Later we may wish to optimize this so that the arg lists are not created if the logging level is too low.
This commit is contained in:
+26
-3
@@ -108,12 +108,11 @@ class MininetLogger( Logger, object ):
|
|||||||
def setLogLevel( self, levelname=None ):
|
def setLogLevel( self, levelname=None ):
|
||||||
"""Setup loglevel.
|
"""Setup loglevel.
|
||||||
Convenience function to support lowercase names.
|
Convenience function to support lowercase names.
|
||||||
|
|
||||||
levelName: level name from LEVELS"""
|
levelName: level name from LEVELS"""
|
||||||
level = LOGLEVELDEFAULT
|
level = LOGLEVELDEFAULT
|
||||||
if levelname != None:
|
if levelname != None:
|
||||||
if levelname not in LEVELS:
|
if levelname not in LEVELS:
|
||||||
raise Exception( 'unknown loglevel seen in set_loglevel' )
|
raise Exception( 'unknown levelname seen in setLogLevel' )
|
||||||
else:
|
else:
|
||||||
level = LEVELS.get( levelname, level )
|
level = LEVELS.get( levelname, level )
|
||||||
|
|
||||||
@@ -122,4 +121,28 @@ class MininetLogger( Logger, object ):
|
|||||||
|
|
||||||
|
|
||||||
lg = MininetLogger()
|
lg = MininetLogger()
|
||||||
info, warn, error, debug = lg.info, lg.warn, lg.error, lg.debug
|
|
||||||
|
# Make things a bit more convenient by adding aliases
|
||||||
|
# (info, warn, error, debug) and allowing info( 'this', 'is', 'OK' )
|
||||||
|
# In the future we may wish to make things more efficient by only
|
||||||
|
# doing the join (and calling the function) unless the logging level
|
||||||
|
# is high enough.
|
||||||
|
|
||||||
|
def makeListCompatible( fn ):
|
||||||
|
"""Return a new function allowing fn( 'a 1 b' ) to be called as
|
||||||
|
newfn( 'a', 1, 'b' )"""
|
||||||
|
|
||||||
|
def newfn( *args ):
|
||||||
|
"Generated function."
|
||||||
|
if len( args ) == 1:
|
||||||
|
return fn( *args )
|
||||||
|
args = ' '.join( [ str( arg ) for arg in args ] )
|
||||||
|
return fn( args )
|
||||||
|
|
||||||
|
# Fix newfn's name and docstring
|
||||||
|
setattr( newfn, '__name__', fn.__name__ )
|
||||||
|
setattr( newfn, '__doc__', fn.__doc__ )
|
||||||
|
return newfn
|
||||||
|
|
||||||
|
info, warn, error, debug = lg.info, lg.warn, lg.error, lg.debug = [
|
||||||
|
makeListCompatible( f ) for f in lg.info, lg.warn, lg.error, lg.debug ]
|
||||||
|
|||||||
Reference in New Issue
Block a user