aboutsummaryrefslogtreecommitdiffstats
path: root/gdpr_obfuscator/logger.py
diff options
context:
space:
mode:
Diffstat (limited to 'gdpr_obfuscator/logger.py')
-rw-r--r--gdpr_obfuscator/logger.py36
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
git.ajschof.me — hosted by ajschofield — powered by cgit