Added logging to file

This commit is contained in:
Florian Kaiser 2024-07-27 00:42:50 +02:00
parent f36f327bf1
commit de834b16e5
5 changed files with 27 additions and 15 deletions

3
.gitignore vendored
View File

@ -1,4 +1,5 @@
__pycache__/* __pycache__/*
tmp/* tmp/*
venv/* venv/*
.env .env
main.log

View File

@ -5,6 +5,7 @@ import PyPDF2
import re import re
from dotenv import load_dotenv from dotenv import load_dotenv
from geopy.geocoders import Nominatim from geopy.geocoders import Nominatim
from logger import logging
load_dotenv(override=True) load_dotenv(override=True)
@ -45,12 +46,12 @@ def get_draeger_json(text):
data["city"] = city[0] + " " + city[1] data["city"] = city[0] + " " + city[1]
data["cityDistrict"] = city[2] data["cityDistrict"] = city[2]
except Exception as e: except Exception as e:
print(f'Fehler: {e}') logging.error(f'Fehler: {e}')
data["lat"] = match[0][7][:2] + '.' + match[0][7][2:] data["lat"] = match[0][7][:2] + '.' + match[0][7][2:]
data["lon"] = match[0][8][:2] + '.' + match[0][8][2:] data["lon"] = match[0][8][:2] + '.' + match[0][8][2:]
print(data) logging.debug(data)
return data return data
else: else:
return None return None

8
logger.py Normal file
View File

@ -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'
)

View File

@ -3,7 +3,7 @@ import imaplib
import email import email
from email.header import decode_header from email.header import decode_header
import os import os
from logger import logging
from helpers import get_draeger_json, read_pdf from helpers import get_draeger_json, read_pdf
load_dotenv(override=True) load_dotenv(override=True)
@ -15,7 +15,7 @@ EMAIL_PASSWORD = os.environ.get("EMAIL_PASSWORD", default=None)
MAILBOX = os.environ.get("MAILBOX", default=None) MAILBOX = os.environ.get("MAILBOX", default=None)
CHECK_INTERVAL = int(os.environ.get("CHECK_INTERVAL", default=None)) # in Sekunden CHECK_INTERVAL = int(os.environ.get("CHECK_INTERVAL", default=None)) # in Sekunden
SAVE_FOLDER = os.environ.get("SAVE_FOLDER", default=None) SAVE_FOLDER = os.environ.get("SAVE_FOLDER", default=None)
def check_email(): def check_email():
try: try:
mail = imaplib.IMAP4_SSL(IMAP_SERVER) mail = imaplib.IMAP4_SSL(IMAP_SERVER)
@ -52,11 +52,11 @@ def check_email():
if filename.endswith('.pdf'): if filename.endswith('.pdf'):
pdf_text = read_pdf(filepath).replace("\n", "") pdf_text = read_pdf(filepath).replace("\n", "")
print(get_draeger_json(pdf_text)) logging.info(get_draeger_json(pdf_text))
mail.logout() mail.logout()
except Exception as e: except Exception as e:
print(f'Fehler: {e}') logging.error(f'Fehler: {e}')
if __name__ == "__main__": if __name__ == "__main__":
check_email() check_email()

18
main.py
View File

@ -8,6 +8,7 @@ from email.header import decode_header
import os import os
import time import time
from helpers import get_draeger_json, read_pdf from helpers import get_draeger_json, read_pdf
from logger import logging
load_dotenv(override=True) 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) SAVE_FOLDER = os.environ.get("SAVE_FOLDER", default=None)
DRAEGER_API_KEY = os.environ.get("DRAEGER_API_KEY", default=None) DRAEGER_API_KEY = os.environ.get("DRAEGER_API_KEY", default=None)
HEALTHCHECK_URL = os.environ.get("HEALTHCHECK_URL", default=None) HEALTHCHECK_URL = os.environ.get("HEALTHCHECK_URL", default=None)
def check_email(): def check_email():
try: try:
mail = imaplib.IMAP4_SSL(IMAP_SERVER) mail = imaplib.IMAP4_SSL(IMAP_SERVER)
@ -44,7 +45,7 @@ def check_email():
subject = subject.decode(encoding if encoding else 'utf-8') subject = subject.decode(encoding if encoding else 'utf-8')
from_ = msg.get("From") 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(): for part in msg.walk():
if part.get_content_maintype() == 'multipart': 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)) r = requests.post('https://einsatzmeldesystem.de/ems/inbound/deployment/universal/', json=get_draeger_json(pdf_text))
print(r.status_code) logging.debug(r.status_code)
print(r.json()) logging.debug(r.json())
except Exception as e: except Exception as e:
data = {} data = {}
data["apiKey"] = DRAEGER_API_KEY data["apiKey"] = DRAEGER_API_KEY
r = requests.post('https://einsatzmeldesystem.de/ems/inbound/deployment/universal/', json=data) 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=") 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() mail.logout()
except Exception as e: 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=") 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__": if __name__ == "__main__":
while True: while True:
logging.debug("Loop")
check_email() check_email()
r = requests.get(HEALTHCHECK_URL + "?status=up&msg=OK&ping=") r = requests.get(HEALTHCHECK_URL + "?status=up&msg=OK&ping=")
print(r.status_code) logging.debug(r.status_code)
time.sleep(CHECK_INTERVAL) time.sleep(CHECK_INTERVAL)