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 pwr-Solaar#2663
  • Loading branch information
MattHag committed Nov 6, 2024
1 parent 7edc2ad commit 36b6714
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 36b6714

Please sign in to comment.