Skip to content

Commit

Permalink
Introduce custom logger
Browse files Browse the repository at this point in the history
Implement logger that internally checks if log level is enabled. Thus,
unnecessary log message computation costs are avoid, when logging is
disabled and logging code can be cut in half.

Related #2663
  • Loading branch information
MattHag committed Nov 6, 2024
1 parent 862cef1 commit d4c412c
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 0 deletions.
28 changes: 28 additions & 0 deletions lib/solaar/custom_logger.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import logging


class CustomLogger(logging.Logger):
"""Logger, that avoids unnecessary string computations.
Does not compute messages for disabled log levels.
"""

def debug(self, msg, *args, **kwargs):
if self.isEnabledFor(logging.DEBUG):
super().debug(msg, *args, **kwargs)

def info(self, msg, *args, **kwargs):
if self.isEnabledFor(logging.INFO):
super().info(msg, *args, **kwargs)

def warning(self, msg, *args, **kwargs):
if self.isEnabledFor(logging.WARNING):
super().warning(msg, *args, **kwargs)

def error(self, msg, *args, **kwargs):
if self.isEnabledFor(logging.ERROR):
super().error(msg, *args, **kwargs)

def critical(self, msg, *args, **kwargs):
if self.isEnabledFor(logging.CRITICAL):
super().critical(msg, *args, **kwargs)
2 changes: 2 additions & 0 deletions lib/solaar/gtk.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,9 @@
from solaar import dbus
from solaar import listener
from solaar import ui
from solaar.custom_logger import CustomLogger

logging.setLoggerClass(CustomLogger)
logger = logging.getLogger(__name__)


Expand Down

0 comments on commit d4c412c

Please sign in to comment.