fix(logging): Split warning and error logs.
This commit is contained in:
@@ -19,8 +19,10 @@ gem_transaction =
|
|||||||
log_file = bot.log
|
log_file = bot.log
|
||||||
|
|
||||||
general_log =
|
general_log =
|
||||||
error_log =
|
error_log = %(general_log)
|
||||||
critical_log =
|
critical_log = %(general_log)
|
||||||
|
warning_log = %(general_log)
|
||||||
|
warning_prefix =
|
||||||
error_prefix =
|
error_prefix =
|
||||||
critical_prefix =
|
critical_prefix =
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ for name in conf.config.options('LOGGING_LEVELS', no_defaults=True):
|
|||||||
logging.getLogger(name).setLevel(conf.logging_levels[name])
|
logging.getLogger(name).setLevel(conf.logging_levels[name])
|
||||||
|
|
||||||
|
|
||||||
setup_main_logger()
|
logging_queue = setup_main_logger()
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ FlatContext = namedtuple(
|
|||||||
'interaction',
|
'interaction',
|
||||||
'guild',
|
'guild',
|
||||||
'author',
|
'author',
|
||||||
|
'channel',
|
||||||
'alias',
|
'alias',
|
||||||
'prefix',
|
'prefix',
|
||||||
'failed')
|
'failed')
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import configparser as cfgp
|
|||||||
|
|
||||||
from .args import args
|
from .args import args
|
||||||
|
|
||||||
shard_number = args.shard or 0
|
shard_number = args.shard
|
||||||
|
|
||||||
class configEmoji(PartialEmoji):
|
class configEmoji(PartialEmoji):
|
||||||
__slots__ = ('fallback',)
|
__slots__ = ('fallback',)
|
||||||
@@ -87,7 +87,10 @@ class Conf:
|
|||||||
"emoji": configEmoji.from_str,
|
"emoji": configEmoji.from_str,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
self.config.read(configfile)
|
|
||||||
|
with open(configfile) as conff:
|
||||||
|
# Opening with read_file mainly to ensure the file exists
|
||||||
|
self.config.read_file(conff)
|
||||||
|
|
||||||
self.section_name = section_name if section_name in self.config else 'DEFAULT'
|
self.section_name = section_name if section_name in self.config else 'DEFAULT'
|
||||||
|
|
||||||
|
|||||||
@@ -188,6 +188,14 @@ class LessThanFilter(logging.Filter):
|
|||||||
# non-zero return means we log this message
|
# non-zero return means we log this message
|
||||||
return 1 if record.levelno < self.max_level else 0
|
return 1 if record.levelno < self.max_level else 0
|
||||||
|
|
||||||
|
class ExactLevelFilter(logging.Filter):
|
||||||
|
def __init__(self, target_level, name=""):
|
||||||
|
super().__init__(name)
|
||||||
|
self.target_level = target_level
|
||||||
|
|
||||||
|
def filter(self, record):
|
||||||
|
return (record.levelno == self.target_level)
|
||||||
|
|
||||||
|
|
||||||
class ThreadFilter(logging.Filter):
|
class ThreadFilter(logging.Filter):
|
||||||
def __init__(self, thread_name):
|
def __init__(self, thread_name):
|
||||||
@@ -234,7 +242,6 @@ class ContextInjection(logging.Filter):
|
|||||||
logging_handler_out = logging.StreamHandler(sys.stdout)
|
logging_handler_out = logging.StreamHandler(sys.stdout)
|
||||||
logging_handler_out.setLevel(logging.DEBUG)
|
logging_handler_out.setLevel(logging.DEBUG)
|
||||||
logging_handler_out.setFormatter(log_fmt)
|
logging_handler_out.setFormatter(log_fmt)
|
||||||
logging_handler_out.addFilter(LessThanFilter(logging.WARNING))
|
|
||||||
logging_handler_out.addFilter(ContextInjection())
|
logging_handler_out.addFilter(ContextInjection())
|
||||||
logger.addHandler(logging_handler_out)
|
logger.addHandler(logging_handler_out)
|
||||||
log_logger.addHandler(logging_handler_out)
|
log_logger.addHandler(logging_handler_out)
|
||||||
@@ -363,14 +370,15 @@ class WebHookHandler(logging.StreamHandler):
|
|||||||
return
|
return
|
||||||
except BucketFull:
|
except BucketFull:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
f"Live logging webhook {self.webhook.id} going too fast! "
|
"Can't keep up! "
|
||||||
"Ignoring records until rate slows down."
|
"Ignoring records on live-logger {self.webhook.id}."
|
||||||
)
|
)
|
||||||
self.ignored += 1
|
self.ignored += 1
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
if self.ignored > 0:
|
if self.ignored > 0:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
|
"Can't keep up! "
|
||||||
f"{self.ignored} live logging records on webhook {self.webhook.id} skipped, continuing."
|
f"{self.ignored} live logging records on webhook {self.webhook.id} skipped, continuing."
|
||||||
)
|
)
|
||||||
self.ignored = 0
|
self.ignored = 0
|
||||||
@@ -392,9 +400,15 @@ if webhook := conf.logging['general_log']:
|
|||||||
handler = WebHookHandler(webhook, batch=True)
|
handler = WebHookHandler(webhook, batch=True)
|
||||||
handlers.append(handler)
|
handlers.append(handler)
|
||||||
|
|
||||||
|
if webhook := conf.logging['warning_log']:
|
||||||
|
handler = WebHookHandler(webhook, prefix=conf.logging['warning_prefix'], batch=True)
|
||||||
|
handler.addFilter(ExactLevelFilter(logging.WARNING))
|
||||||
|
handler.setLevel(logging.WARNING)
|
||||||
|
handlers.append(handler)
|
||||||
|
|
||||||
if webhook := conf.logging['error_log']:
|
if webhook := conf.logging['error_log']:
|
||||||
handler = WebHookHandler(webhook, prefix=conf.logging['error_prefix'], batch=True)
|
handler = WebHookHandler(webhook, prefix=conf.logging['error_prefix'], batch=True)
|
||||||
handler.setLevel(logging.WARNING)
|
handler.setLevel(logging.ERROR)
|
||||||
handlers.append(handler)
|
handlers.append(handler)
|
||||||
|
|
||||||
if webhook := conf.logging['critical_log']:
|
if webhook := conf.logging['critical_log']:
|
||||||
|
|||||||
Reference in New Issue
Block a user