about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authoruser <user@node5.net>2024-04-09 19:11:01 +0200
committeruser <user@node5.net>2024-04-09 19:11:01 +0200
commit535d1119deacb8e1444c92b3bcb7bbec318b2e4b (patch)
treec0418194883a3058ade575739c58012cd90cd704 /src
parent3083f77433a12da5b1fc5f59afb2c48562346505 (diff)
proper logging
Diffstat (limited to 'src')
-rw-r--r--src/article.py18
-rw-r--r--src/blog_node5_net.py31
2 files changed, 39 insertions, 10 deletions
diff --git a/src/article.py b/src/article.py
index 20e1c21..38e8cd7 100644
--- a/src/article.py
+++ b/src/article.py
@@ -8,6 +8,8 @@ import typing
 import markdown
 import yaml
 
+logger = logging.getLogger(__name__)
+
 
 # Known exceptions, these are raised when generating on program exiting error, and are displayed to the user nicely
 class ArticleHandlerException(Exception):
@@ -106,7 +108,7 @@ class ArticleGenerator:
             raise ArticleNoMetaData(f'No metadata found')
 
     def get_article(self, path: str) -> Article:
-        logging.debug(path)
+        logger.info(path)
         article_args = {}
         filename, file_extension = os.path.splitext(path)
 
@@ -122,10 +124,10 @@ class ArticleGenerator:
             thumbnail_paths = glob.glob(f'{article_args["folder_path"]}/Thumbnail*')
 
             if len(thumbnail_paths) > 1:
-                logging.warning(f"More than one thumbnail found, using: {thumbnail_paths[0]}")
+                logger.warning(f"More than one thumbnail found, using: {thumbnail_paths[0]}")
 
             if len(thumbnail_paths) == 0:
-                logging.warning("No thumbnail image")
+                logger.warning("No thumbnail image")
             else:
                 article_args['thumbnail_path'] = '/'.join(pathlib.Path(thumbnail_paths[0]).parts[2:])
         else:
@@ -157,17 +159,17 @@ class ArticleGenerator:
     def discover_folder_structure(self, article: Article, articles: Folder):
         previous_folder = articles
         for folder_name in article.web_dir:
-            logging.debug(folder_name)
+            logger.debug(folder_name)
 
             if folder_name not in previous_folder.sub_folders:
-                logging.debug('new')
+                logger.debug('new')
                 current_folder = Folder(url=f'{previous_folder.url}{folder_name}/', name=folder_name)
                 previous_folder.sub_folders[folder_name] = current_folder
             else:
-                logging.debug('reuse')
+                logger.debug('reuse')
                 current_folder = previous_folder.sub_folders[folder_name]
             previous_folder = current_folder
-            logging.debug('')
+            logger.debug('')
 
         previous_folder.articles.append(article)
 
@@ -184,7 +186,7 @@ class ArticleGenerator:
         articles = Folder(url='/', name='index')
         for article_path in articles_paths:
             article = self.get_article(article_path)
-            logging.debug(article.pretty_print)
+            logger.debug(article.pretty_print)
             self.discover_folder_structure(articles=articles, article=article)
         self.sort_articles(articles)
         return articles
diff --git a/src/blog_node5_net.py b/src/blog_node5_net.py
index 1b1ebce..a56ff19 100644
--- a/src/blog_node5_net.py
+++ b/src/blog_node5_net.py
@@ -13,9 +13,36 @@ import article
 import db_handler
 import telegram_handler
 
-logging.basicConfig(format='%(asctime)s,%(msecs)03d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s',
-                    datefmt='%Y-%m-%d:%H:%M:%S', level=logging.DEBUG)
+
+class CustomFormatter(logging.Formatter):
+    grey = "\x1b[90;20m"
+    blue = "\x1b[34;20m"
+    yellow = "\x1b[33;20m"
+    red = "\x1b[31;20m"
+    bold_red = "\x1b[31;1m"
+    reset = "\x1b[0m"
+    format = "%(asctime)s,%(msecs)03d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s"
+
+    FORMATS = {
+        logging.DEBUG: grey + format + reset,
+        logging.INFO: blue + format + reset,
+        logging.WARNING: yellow + format + reset,
+        logging.ERROR: red + format + reset,
+        logging.CRITICAL: bold_red + format + reset
+    }
+
+    def format(self, record):
+        log_fmt = self.FORMATS.get(record.levelno)
+        formatter = logging.Formatter(log_fmt)
+        return formatter.format(record)
+
+
 logger = logging.getLogger(__name__)
+logger.root.setLevel(logging.INFO)
+
+stream_handler = logging.StreamHandler()
+stream_handler.setFormatter(CustomFormatter())
+logger.root.addHandler(stream_handler)
 
 with open(os.path.join('configs', 'config.yml'), 'r') as file:
     config = yaml.safe_load(file.read())