mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-13 16:52:58 -07:00
Separate API and websocket logging
This commit is contained in:
parent
fe210646c3
commit
54cd860c13
5 changed files with 178 additions and 51 deletions
|
@ -31,6 +31,8 @@ import helpers
|
|||
|
||||
# These settings are for file logging only
|
||||
FILENAME = "plexpy.log"
|
||||
FILENAME_API = "plexpy_api.log"
|
||||
FILENAME_WEBSOCKET = "plexpy_websocket.log"
|
||||
MAX_SIZE = 5000000 # 5 MB
|
||||
MAX_FILES = 5
|
||||
|
||||
|
@ -38,6 +40,10 @@ _BLACKLIST_WORDS = []
|
|||
|
||||
# PlexPy logger
|
||||
logger = logging.getLogger("plexpy")
|
||||
# PlexPy API logger
|
||||
logger_api = logging.getLogger("plexpy_api")
|
||||
# PlexPy websocket logger
|
||||
logger_websocket = logging.getLogger("plexpy_websocket")
|
||||
|
||||
# Global queue for multiprocessing logging
|
||||
queue = None
|
||||
|
@ -184,7 +190,7 @@ def initLogger(console=False, log_dir=False, verbose=False):
|
|||
|
||||
# Close and remove old handlers. This is required to reinit the loggers
|
||||
# at runtime
|
||||
for handler in logger.handlers[:]:
|
||||
for handler in logger.handlers[:] + logger_api.handlers[:] + logger_websocket.handlers[:]:
|
||||
# Just make sure it is cleaned up.
|
||||
if isinstance(handler, handlers.RotatingFileHandler):
|
||||
handler.close()
|
||||
|
@ -192,22 +198,45 @@ def initLogger(console=False, log_dir=False, verbose=False):
|
|||
handler.flush()
|
||||
|
||||
logger.removeHandler(handler)
|
||||
logger_api.removeHandler(handler)
|
||||
logger_websocket.removeHandler(handler)
|
||||
|
||||
# Configure the logger to accept all messages
|
||||
logger.propagate = False
|
||||
logger.setLevel(logging.DEBUG if verbose else logging.INFO)
|
||||
logger_api.propagate = False
|
||||
logger_api.setLevel(logging.DEBUG if verbose else logging.INFO)
|
||||
logger_websocket.propagate = False
|
||||
logger_websocket.setLevel(logging.DEBUG if verbose else logging.INFO)
|
||||
|
||||
# Setup file logger
|
||||
if log_dir:
|
||||
filename = os.path.join(log_dir, FILENAME)
|
||||
|
||||
file_formatter = logging.Formatter('%(asctime)s - %(levelname)-7s :: %(threadName)s : %(message)s', '%Y-%m-%d %H:%M:%S')
|
||||
|
||||
# Main PlexPy logger
|
||||
filename = os.path.join(log_dir, FILENAME)
|
||||
file_handler = handlers.RotatingFileHandler(filename, maxBytes=MAX_SIZE, backupCount=MAX_FILES)
|
||||
file_handler.setLevel(logging.DEBUG)
|
||||
file_handler.setFormatter(file_formatter)
|
||||
|
||||
logger.addHandler(file_handler)
|
||||
|
||||
# PlexPy API logger
|
||||
filename = os.path.join(log_dir, FILENAME_API)
|
||||
file_handler = handlers.RotatingFileHandler(filename, maxBytes=MAX_SIZE, backupCount=MAX_FILES)
|
||||
file_handler.setLevel(logging.DEBUG)
|
||||
file_handler.setFormatter(file_formatter)
|
||||
|
||||
logger_api.addHandler(file_handler)
|
||||
|
||||
# PlexPy websocket logger
|
||||
filename = os.path.join(log_dir, FILENAME_WEBSOCKET)
|
||||
file_handler = handlers.RotatingFileHandler(filename, maxBytes=MAX_SIZE, backupCount=MAX_FILES)
|
||||
file_handler.setLevel(logging.DEBUG)
|
||||
file_handler.setFormatter(file_formatter)
|
||||
|
||||
logger_websocket.addHandler(file_handler)
|
||||
|
||||
# Setup console logger
|
||||
if console:
|
||||
console_formatter = logging.Formatter('%(asctime)s - %(levelname)s :: %(threadName)s : %(message)s', '%Y-%m-%d %H:%M:%S')
|
||||
|
@ -221,7 +250,7 @@ def initLogger(console=False, log_dir=False, verbose=False):
|
|||
# Only add filters after the config file has been initialized
|
||||
# Nothing prior to initialization should contain sensitive information
|
||||
if not plexpy.DEV and plexpy.CONFIG:
|
||||
for handler in logger.handlers:
|
||||
for handler in logger.handlers + logger_api.handlers + logger_websocket.handlers:
|
||||
handler.addFilter(BlacklistFilter())
|
||||
handler.addFilter(PublicIPFilter())
|
||||
|
||||
|
@ -278,9 +307,26 @@ def initHooks(global_exceptions=True, thread_exceptions=True, pass_original=True
|
|||
threading.Thread.__init__ = new_init
|
||||
|
||||
# Expose logger methods
|
||||
# Main PlexPy logger
|
||||
info = logger.info
|
||||
warn = logger.warn
|
||||
error = logger.error
|
||||
debug = logger.debug
|
||||
warning = logger.warning
|
||||
exception = logger.exception
|
||||
|
||||
# PlexPy API logger
|
||||
api_info = logger_api.info
|
||||
api_warn = logger_api.warn
|
||||
api_error = logger_api.error
|
||||
api_debug = logger_api.debug
|
||||
api_warning = logger_api.warning
|
||||
api_exception = logger_api.exception
|
||||
|
||||
# PlexPy websocket logger
|
||||
websocket_info = logger_websocket.info
|
||||
websocket_warn = logger_websocket.warn
|
||||
websocket_error = logger_websocket.error
|
||||
websocket_debug = logger_websocket.debug
|
||||
websocket_warning = logger_websocket.warning
|
||||
websocket_exception = logger_websocket.exception
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue