From 53128fef5832385cc7787270a151dbcac8436f09 Mon Sep 17 00:00:00 2001 From: Dylan Date: Tue, 1 Aug 2023 14:07:42 +0100 Subject: [PATCH] Better logging --- twitfix.py | 13 +++++++------ vxlogging.py | 10 +++++++++- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/twitfix.py b/twitfix.py index f6dcd1a..a628c45 100644 --- a/twitfix.py +++ b/twitfix.py @@ -8,7 +8,7 @@ import urllib.parse import urllib.request import combineImg from datetime import date,datetime, timedelta -from io import BytesIO +from io import BytesIO, StringIO import msgs import twExtract as twExtract from configHandler import config @@ -17,6 +17,7 @@ from yt_dlp.utils import ExtractorError from twitter.api import TwitterHTTPError import vxlogging as log import zipfile +import traceback app = Flask(__name__) CORS(app) @@ -236,7 +237,7 @@ def twitfix(sub_path): log.success("API Get success") return apiObject except Exception as e: - log.error("API Get failed: " + twitter_url + " " + str(e)) + log.error("API Get failed: " + twitter_url + " " + log.get_exception_traceback_str(e)) abort(500, '{"message": "Failed to extract tweet (Processing error)"}') if match is not None: @@ -373,17 +374,17 @@ def vnfFromCacheOrDL(video_link): exErr.msg=msgs.tweetSuspended else: exErr.msg=msgs.tweetNotFound - log.error("VNF Get failed: " + video_link + " " + str(exErr)) + + log.error("VNF Get failed: " + video_link + " " + log.get_exception_traceback_str(exErr)) return None,exErr.msg except TwitterHTTPError as twErr: - log.error("VNF Get failed: " + video_link + " " + str(twErr)) + log.error("VNF Get failed: " + video_link + " " + log.get_exception_traceback_str(twErr)) if twErr.e.code == 404: return None,msgs.tweetNotFound else: return None,None except Exception as e: - log.error("VNF Get failed: " + video_link + " " + str(e)) - log.error(e) + log.error("VNF Get failed: " + video_link + " " + log.get_exception_traceback_str(e)) return None,None else: return upgradeVNF(cached_vnf),None diff --git a/vxlogging.py b/vxlogging.py index 852ac4c..6fd5631 100644 --- a/vxlogging.py +++ b/vxlogging.py @@ -1,5 +1,7 @@ IS_DEBUG = False from flask import request +from io import StringIO +import traceback def generic(message): invocation_id = None try: @@ -33,4 +35,10 @@ def warn(message): def debug(message): if IS_DEBUG: message = str(message) - generic(f" > [ D ] {message}") \ No newline at end of file + generic(f" > [ D ] {message}") + +def get_exception_traceback_str(exc: Exception) -> str: + # Ref: https://stackoverflow.com/a/76584117/ + file = StringIO() + traceback.print_exception(exc, file=file) + return file.getvalue().rstrip() \ No newline at end of file