diff options
Diffstat (limited to 'gdpr_obfuscator/logger.py')
| -rw-r--r-- | gdpr_obfuscator/logger.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/gdpr_obfuscator/logger.py b/gdpr_obfuscator/logger.py new file mode 100644 index 0000000..140fa8f --- /dev/null +++ b/gdpr_obfuscator/logger.py @@ -0,0 +1,36 @@ +import logging +import os +from enum import Enum + + +class LogLevel(Enum): + DEBUG = logging.DEBUG + INFO = logging.INFO + WARNING = logging.WARNING + ERROR = logging.ERROR + CRITICAL = logging.CRITICAL + + +def get_logger(name: str, level: LogLevel = LogLevel.INFO) -> logging.Logger: + if isinstance(level, str): + try: + level = LogLevel[level.upper()] + except KeyError: + raise ValueError( + f"Invalid log level '{level}'. Choose from: {', '.join(l.name for l in LogLevel)}" + ) + + logger = logging.getLogger(name) + + if logger.hasHandlers(): + logger.handlers.clear() + + handler = logging.StreamHandler() + logger.setLevel(level.value) + formatting = logging.Formatter( + "[%(asctime)s] - %(levelname)s::%(name)s - %(message)s" + ) + handler.setFormatter(formatting) + logger.addHandler(handler) + + return logger |
