Skip to content

Commit

Permalink
Lazy setup logger filters in first access
Browse files Browse the repository at this point in the history
  • Loading branch information
glensc committed Feb 23, 2024
1 parent 911bade commit b6848a3
Showing 1 changed file with 23 additions and 38 deletions.
61 changes: 23 additions & 38 deletions plextraktsync/util/Factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,15 +219,32 @@ def watch_state_updater(self):
def logging(self):
import logging

from plextraktsync.decorators.memoize import memoize
from plextraktsync.logger.init import initialize

config = self.config
initialize(config)

# Setup log filters
self.logger_filter_apply(logging.getLogger("plextraktsync"))
# Setup log filters for external packages
self.logger_filter_apply(self.logger_filter)

return logging
factory = self

class Logging:
@staticmethod
@memoize
def getLogger(name):
print("get logger", name)
""" Wrap getLogger and add our filters """
logger = logging.getLogger(name)
logger.addFilter(factory.logger_filter)
return logger

def __getattr__(self, name):
""" Wrap log level attributes """
return getattr(logging, name)

return Logging()

@cached_property
def logger(self):
Expand All @@ -244,46 +261,14 @@ def logger_filter(self):

return LoggerFilter(config["logging"]["filter"], logger)

def logger_filter_apply(self, logger):
config = self.config
loggers = [
"plextraktsync",
"plextraktsync.cli",
"plextraktsync.commands.sync",
"plextraktsync.decorators.measure_time",
"plextraktsync.decorators.rate_limit",
"plextraktsync.decorators.retry",
"plextraktsync.media.MediaFactory",
"plextraktsync.plan.Walker",
"plextraktsync.plex.PlexApi",
"plextraktsync.plex.PlexPlaylist",
"plextraktsync.plex.PlexServerConnection",
"plextraktsync.queue.BackgroundTask",
"plextraktsync.queue.TraktBatchWorker",
"plextraktsync.queue.TraktMarkWatchedWorker",
"plextraktsync.queue.TraktScrobbleWorker",
"plextraktsync.sync",
"plextraktsync.trakt.ScrobblerProxy",
"plextraktsync.trakt.TraktApi",
"plextraktsync.trakt.TraktLookup",
"plextraktsync.trakt.TraktUserList",
"plextraktsync.trakt.TraktUserListCollection",
"plextraktsync.util.Factory",
"plextraktsync.util.Timer",
"plextraktsync.watch.EventDispatcher",
"plextraktsync.watch.WatchStateUpdater",
"plextraktsync.watch.WebSocketListener",
]
loggers.extend(config["logging"]["filter_loggers"] or [])

def logger_filter_apply(self, logger_filter):
import logging
config = self.config
loggers = config["logging"]["filter_loggers"] or []

logger_filter = self.logger_filter
for name in loggers:
logging.getLogger(name).addFilter(logger_filter)

return logger

@cached_property
def console_logger(self):
from rich.logging import RichHandler
Expand Down

0 comments on commit b6848a3

Please sign in to comment.