diff --git a/.gitignore b/.gitignore index 237fda6..ec207b8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ __pycache__/* tmp/* venv/* -.env \ No newline at end of file +.env +main.log \ No newline at end of file diff --git a/helpers.py b/helpers.py index 46aca3e..0aa2e9a 100644 --- a/helpers.py +++ b/helpers.py @@ -5,6 +5,7 @@ import PyPDF2 import re from dotenv import load_dotenv from geopy.geocoders import Nominatim +from logger import logging load_dotenv(override=True) @@ -45,12 +46,12 @@ def get_draeger_json(text): data["city"] = city[0] + " " + city[1] data["cityDistrict"] = city[2] except Exception as e: - print(f'Fehler: {e}') + logging.error(f'Fehler: {e}') data["lat"] = match[0][7][:2] + '.' + match[0][7][2:] data["lon"] = match[0][8][:2] + '.' + match[0][8][2:] - print(data) + logging.debug(data) return data else: return None \ No newline at end of file diff --git a/logger.py b/logger.py new file mode 100644 index 0000000..ddb0d52 --- /dev/null +++ b/logger.py @@ -0,0 +1,8 @@ +import logging + +logging.basicConfig( + filename='./main.log', + level=logging.DEBUG, + format='%(asctime)s - %(levelname)s - %(message)s', + datefmt='%Y-%m-%d %H:%M:%S' +) \ No newline at end of file diff --git a/mail_analyzer.py b/mail_analyzer.py index 5fb4259..58b4d0d 100644 --- a/mail_analyzer.py +++ b/mail_analyzer.py @@ -3,7 +3,7 @@ import imaplib import email from email.header import decode_header import os - +from logger import logging from helpers import get_draeger_json, read_pdf load_dotenv(override=True) @@ -15,7 +15,7 @@ EMAIL_PASSWORD = os.environ.get("EMAIL_PASSWORD", default=None) MAILBOX = os.environ.get("MAILBOX", default=None) CHECK_INTERVAL = int(os.environ.get("CHECK_INTERVAL", default=None)) # in Sekunden SAVE_FOLDER = os.environ.get("SAVE_FOLDER", default=None) - + def check_email(): try: mail = imaplib.IMAP4_SSL(IMAP_SERVER) @@ -52,11 +52,11 @@ def check_email(): if filename.endswith('.pdf'): pdf_text = read_pdf(filepath).replace("\n", "") - print(get_draeger_json(pdf_text)) + logging.info(get_draeger_json(pdf_text)) mail.logout() except Exception as e: - print(f'Fehler: {e}') + logging.error(f'Fehler: {e}') if __name__ == "__main__": check_email() diff --git a/main.py b/main.py index a00a0d1..c6be153 100644 --- a/main.py +++ b/main.py @@ -8,6 +8,7 @@ from email.header import decode_header import os import time from helpers import get_draeger_json, read_pdf +from logger import logging load_dotenv(override=True) @@ -20,7 +21,7 @@ CHECK_INTERVAL = int(os.environ.get("CHECK_INTERVAL", default=None)) # in Sekund SAVE_FOLDER = os.environ.get("SAVE_FOLDER", default=None) DRAEGER_API_KEY = os.environ.get("DRAEGER_API_KEY", default=None) HEALTHCHECK_URL = os.environ.get("HEALTHCHECK_URL", default=None) - + def check_email(): try: mail = imaplib.IMAP4_SSL(IMAP_SERVER) @@ -44,7 +45,7 @@ def check_email(): subject = subject.decode(encoding if encoding else 'utf-8') from_ = msg.get("From") - print(f'Neue E-Mail von {from_} mit Betreff: {subject}') + logging.info(f'Neue E-Mail von {from_} mit Betreff: {subject}') for part in msg.walk(): if part.get_content_maintype() == 'multipart': @@ -63,28 +64,29 @@ def check_email(): r = requests.post('https://einsatzmeldesystem.de/ems/inbound/deployment/universal/', json=get_draeger_json(pdf_text)) - print(r.status_code) - print(r.json()) + logging.debug(r.status_code) + logging.debug(r.json()) except Exception as e: data = {} data["apiKey"] = DRAEGER_API_KEY r = requests.post('https://einsatzmeldesystem.de/ems/inbound/deployment/universal/', json=data) r = requests.get(HEALTHCHECK_URL + "?status=down&msg=Can not parse data. Alarming with empty data&ping=") - print(r.status_code) + logging.debug(r.status_code) mail.logout() except Exception as e: - print(f'Fehler: {e}') + logging.error(f'Fehler: {e}') r = requests.get(HEALTHCHECK_URL + "?status=down&msg=Can not connect to mail server&ping=") - print(r.status_code) + logging.debug(r.status_code) if __name__ == "__main__": while True: + logging.debug("Loop") check_email() r = requests.get(HEALTHCHECK_URL + "?status=up&msg=OK&ping=") - print(r.status_code) + logging.debug(r.status_code) time.sleep(CHECK_INTERVAL)