libretime/shared/libretime_shared/logging.py

39 lines
1.0 KiB
Python
Raw Normal View History

2023-02-26 01:27:00 +01:00
import logging
from logging.handlers import TimedRotatingFileHandler
from pathlib import Path
2023-02-26 01:27:00 +01:00
from typing import List, Optional, Tuple
2023-02-26 01:27:00 +01:00
logger = logging.getLogger(__name__)
def setup_logger(
2023-02-26 01:27:00 +01:00
level: str,
filepath: Optional[Path] = None,
2023-02-26 01:27:00 +01:00
serialize: bool = False, # pylint: disable=unused-argument
rotate: bool = True,
2023-02-26 01:27:00 +01:00
) -> Tuple[str, Optional[Path]]:
"""
Configure the logger and return the log level and log filepath.
"""
2023-02-26 01:27:00 +01:00
level = level.upper()
2023-02-26 01:27:00 +01:00
root = logging.getLogger()
root.setLevel(level)
2023-02-26 01:27:00 +01:00
formatter = logging.Formatter(
"%(asctime)s | %(levelname)-8s | %(name)s:%(funcName)s:%(lineno)s - %(message)s"
)
handlers: List[logging.Handler] = [logging.StreamHandler()]
if filepath is not None:
if rotate:
2023-02-26 01:27:00 +01:00
handlers.append(TimedRotatingFileHandler(filepath, when="midnight"))
else:
handlers.append(logging.FileHandler(filepath))
2023-02-26 01:27:00 +01:00
for handler in handlers:
handler.setFormatter(formatter)
root.addHandler(handler)
return level, filepath