Python Logging - How do I disable a package's Logging?
--------------------------------------------------
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Romantic Lands Beckon
--
Chapters
00:00 Python Logging - How Do I Disable A Package'S Logging?
01:27 Accepted Answer Score 3
02:38 Thank you
--
Full question
https://stackoverflow.com/questions/5907...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #logging #starlette #uvicorn
#avk47
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Romantic Lands Beckon
--
Chapters
00:00 Python Logging - How Do I Disable A Package'S Logging?
01:27 Accepted Answer Score 3
02:38 Thank you
--
Full question
https://stackoverflow.com/questions/5907...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #logging #starlette #uvicorn
#avk47
ACCEPTED ANSWER
Score 3
logging.basicConfig adds a Handler. Then you go and add another. Both directed to the same file.
logging.basicConfig(filename=f'{CFG.get("log_path")}',
filemode='w',
level=logging.DEBUG,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
rotating = RotatingFileHandler(f'{CFG.get("log_path")}', maxBytes=1024*1024*500, backupCount=4)
logging.getLogger('').addHandler(rotating)
So to see how to fix this it is best to look at what logging.basicConfig actually does:
def basicConfig(**kwargs):
_acquireLock()
try:
if len(root.handlers) == 0:
filename = kwargs.get("filename")
if filename:
mode = kwargs.get("filemode", 'a')
hdlr = FileHandler(filename, mode)
else:
stream = kwargs.get("stream")
hdlr = StreamHandler(stream)
fs = kwargs.get("format", BASIC_FORMAT)
dfs = kwargs.get("datefmt", None)
fmt = Formatter(fs, dfs)
hdlr.setFormatter(fmt)
root.addHandler(hdlr)
level = kwargs.get("level")
if level is not None:
root.setLevel(level)
finally:
_releaseLock()
Inlining basicConfig results in:
root = logging.getLogger('')
if len(root.handlers) == 0:
filename = f'{CFG.get("log_path")}'
mode = 'w'
hdlr = FileHandler(filename, mode)
fs = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
dfs = None
fmt = Formatter(fs, dfs)
hdlr.setFormatter(fmt)
root.addHandler(hdlr)
root.setLevel(logging.DEBUG)
rotating = RotatingFileHandler(f'{CFG.get("log_path")}', maxBytes=1024*1024*500, backupCount=4)
root.addHandler(rotating)
Can you see the issue? The same file is setup with a Handler twice so to fix this write it as:
root = logging.getLogger('')
if len(root.handlers) == 0:
filename = f'{CFG.get("log_path")}'
hdlr = RotatingFileHandler(filename, maxBytes=1024*1024*500, backupCount=4)
fs = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
fmt = Formatter(fs)
hdlr.setFormatter(fmt)
root.addHandler(hdlr)
root.setLevel(logging.DEBUG)