Add logging with .env support

This commit is contained in:
William Valentin
2025-07-17 15:36:52 -07:00
parent 968ca60f62
commit 1e0441fa07
2 changed files with 48 additions and 1 deletions

1
.gitignore vendored
View File

@@ -5,3 +5,4 @@ dist/
*.pyc
__pycache__/
*.spec
*.log

View File

@@ -1,4 +1,5 @@
import csv
import logging
import os
import tkinter as tk
from tkinter import messagebox, ttk
@@ -7,6 +8,9 @@ import matplotlib.pyplot as plt
import pandas as pd
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import sys
from dotenv import load_dotenv
class MedTrackerApp:
def __init__(self, root):
@@ -17,7 +21,24 @@ class MedTrackerApp:
# self.root.iconbitmap("app_icon.ico")
# self.root.geometry("800x600")
if len(sys.argv) > 1:
script_name = sys.argv[0]
first_argument = sys.argv[1]
if logger.level == logging.DEBUG:
logger.debug(f"Script name: {script_name}")
logger.debug(f"First argument: {first_argument}")
if os.path.exists(first_argument):
self.filename = first_argument
logger.info(f"Using data file: {first_argument}")
else:
self.filename = "thechart_data.csv"
logger.warning(
f"Data file {first_argument} does not exist."
f" Using default file: {self.filename}"
)
self.initialize_csv()
main_frame = ttk.Frame(self.root, padding="10")
@@ -489,6 +510,7 @@ class MedTrackerApp:
def update_graph(self, df: pd.DataFrame) -> None:
self.ax.clear()
if not df.empty:
df["date"] = pd.to_datetime(df["date"])
df = df.sort_values(by="date")
df.set_index(keys="date", inplace=True)
self.ax.plot(
@@ -515,7 +537,31 @@ class MedTrackerApp:
self.canvas.draw()
def setup_logging() -> logging.Logger:
load_dotenv()
log_file = os.getenv("LOG_FILE", "/tmp/thechart.log")
if not os.path.exists(os.path.dirname(log_file)):
os.makedirs(os.path.dirname(log_file), exist_ok=True)
log_level = os.getenv("LOG_LEVEL", "INFO").upper()
if log_level not in ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]:
log_level = "DEBUG"
logging.basicConfig(
level=getattr(logging, log_level),
format="%(asctime)s - %(levelname)s - %(message)s",
handlers=[
logging.FileHandler(log_file),
logging.StreamHandler(sys.stdout),
],
)
logger = logging.getLogger()
return logger
if __name__ == "__main__":
logger = setup_logging()
root = tk.Tk()
app = MedTrackerApp(root)
root.mainloop()