Skip to content

Commit

Permalink
make_logger
Browse files Browse the repository at this point in the history
  • Loading branch information
mdipierro committed Aug 23, 2024
1 parent 887a440 commit 128c48d
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions py4web/server_adapters/logging_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,41 @@
import sys


def make_logger(name, loggers_info):
"""
Abstraction layer on logging. Example of usage:
from py4web.server_adapters.logging_utils import make_logger
loggers_info = [
"warning:warning.log",
"info:info.log",
"debug:debug.log:$(asctime)s > %(levelname)s > %(message)s",
]
logger = make_logger("py4web:appname", loggers_info)
"""
default_formatter = "%(asctime)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s"
# reset loggers
root = logging.getLogger(name)
list(map(root.removeHandler, root.handlers))
list(map(root.removeFilter, root.filters))
for logger in loggers_info:
logger += (":stderr" if logger.count(":") == 0 else "")
logger += (":" if logger.count(":") == 1 else "")
level, filename, formatter = logger.split(":", 2)
if not formatter:
formatter = default_formatter
if filename in ("stdout", "stderr"):
handler = logging.StreamHandler(getattr(sys, filename))
else:
handler = logging.FileHandler(filename)
handler.setFormatter(formatter)
handler.setLevel(getattr(logging, level.upper(), "DEBUG"))
root.addHandler(handler)
return root


def get_log_file(out_banner=True):
"""
Returns the filename for logging or None
Expand Down

0 comments on commit 128c48d

Please sign in to comment.