@@ -178,7 +178,7 @@ def exception( cls, *args, **kwargs ):
178178
179179 def __init__ ( self , midformat = None , datefmt = _default_datefmt ,
180180 show_millisec = _show_millisec , level = _default_log_level ,
181- handler = None ):
181+ handler = None , propagate = False ):
182182 """Initialize a SNLogger object, and the logging.Logger object it holds.
183183
184184 Parameters
@@ -205,6 +205,15 @@ def __init__( self, midformat=None, datefmt=_default_datefmt,
205205 If you want it to go somewhere else, create an approprite
206206 logging.Handler subclass and pass it here.
207207
208+ propagate : book, default False
209+ cf: python logging.Logger.propagate
210+
211+ We default to False to avoid replication of logging messages
212+ if, somehow, there's another logger above the one we create
213+ here. (TODO: understand how python logging ancestors work.
214+ I've never expicitly set a parent logger, and yet somehow in
215+ code loggers often seem to have ancestors.)
216+
208217 """
209218 self ._midformat = midformat
210219 self ._datefmt = datefmt
@@ -214,6 +223,7 @@ def __init__( self, midformat=None, datefmt=_default_datefmt,
214223
215224 SNLogger ._ordinal += 1
216225 self ._logger = logging .getLogger ( f"SeeChange_{ SNLogger ._ordinal } " )
226+ self ._logger .propagate = propagate
217227
218228 fmtstr = "[%(asctime)s"
219229 if self ._show_millisec :
0 commit comments