mirror of
https://github.com/beetbox/beets.git
synced 2026-01-30 20:13:37 +01:00
Offer new-style formatting for logging
beets.logging is a drop-in replacement for logging. Any logger created
from beets.logging.getLogger() will use {}-style formatting instead of
%-style, on python 2 and 3.
This commit is contained in:
parent
405726ba13
commit
b40fb507c3
1 changed files with 37 additions and 0 deletions
37
beets/logging.py
Normal file
37
beets/logging.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
"""Allow {}-style formatting on python 2 and 3
|
||||
|
||||
Provide everything the "logging" module does, the only difference is that when
|
||||
getLogger(name) instantiates a logger that logger uses {}-style formatting.
|
||||
"""
|
||||
|
||||
from __future__ import absolute_import
|
||||
from copy import copy
|
||||
from logging import *
|
||||
|
||||
|
||||
# create a str.format-based logger
|
||||
class StrFormatLogger(Logger):
|
||||
class _LogMessage(object):
|
||||
def __init__(self, msg, args, kwargs):
|
||||
self.msg = msg
|
||||
self.args = args
|
||||
self.kwargs = kwargs
|
||||
|
||||
def __str__(self):
|
||||
return self.msg.format(*self.args, **self.kwargs)
|
||||
|
||||
def _log(self, level, msg, args, exc_info=None, extra=None, **kwargs):
|
||||
"""Log 'msg.format(*args, **kwargs)"""
|
||||
msg = self._LogMessage(msg, args, kwargs)
|
||||
return super(StrFormatLogger, self)._log(level, msg, (), exc_info, extra)
|
||||
|
||||
|
||||
my_manager = copy(Logger.manager)
|
||||
my_manager.loggerClass = StrFormatLogger
|
||||
|
||||
|
||||
def getLogger(name=None):
|
||||
if name:
|
||||
return my_manager.getLogger(name)
|
||||
else:
|
||||
return root
|
||||
Loading…
Reference in a new issue