DinoPLayZ commited on
Commit
7fe7108
·
verified ·
1 Parent(s): bb6482b

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +19 -36
main.py CHANGED
@@ -37,42 +37,25 @@ except AttributeError:
37
  IST = timezone(timedelta(hours=5, minutes=30))
38
  logging.Formatter.converter = lambda *args: datetime.fromtimestamp(args[-1], tz=IST).timetuple()
39
 
40
- class PrintHandler(logging.Handler):
41
- def emit(self, record):
42
- try:
43
- msg = self.format(record)
44
- print(msg, flush=True)
45
- sys.stdout.flush()
46
- except Exception:
47
- self.handleError(record)
48
-
49
- # Explicitly configure root logger
50
- root_logger = logging.getLogger()
51
- root_logger.setLevel(logging.INFO)
52
-
53
- # Clear any existing handlers that might suppress output
54
- if root_logger.hasHandlers():
55
- root_logger.handlers.clear()
56
-
57
- # Attach PrintHandler explicitly to bypass Docker fd buffering
58
- stdout_handler = PrintHandler()
59
- stdout_handler.setLevel(logging.INFO)
60
- formatter = logging.Formatter(
61
- fmt='[%(asctime)s] %(levelname)s: %(message)s',
62
- datefmt='%I:%M:%S %p'
63
- )
64
- stdout_handler.setFormatter(formatter)
65
- root_logger.addHandler(stdout_handler)
66
-
67
- logger = logging.getLogger(__name__)
68
-
69
- # Force Uvicorn and FastAPI to use our root logger
70
- for log_name in ("uvicorn", "uvicorn.error", "uvicorn.access", "fastapi"):
71
- l = logging.getLogger(log_name)
72
- l.handlers = []
73
- l.propagate = True
74
-
75
- # Suppress Uvicorn's default access logs (spammy)
76
  logging.getLogger("uvicorn.access").setLevel(logging.WARNING)
77
 
78
  # ==============================================================================
 
37
  IST = timezone(timedelta(hours=5, minutes=30))
38
  logging.Formatter.converter = lambda *args: datetime.fromtimestamp(args[-1], tz=IST).timetuple()
39
 
40
+ # Create a dedicated named logger instead of fighting Uvicorn over the root logger
41
+ logger = logging.getLogger("bip_notifier")
42
+ logger.setLevel(logging.INFO)
43
+
44
+ # Prevent log messages from propagating to the root logger (where Uvicorn might swallow them)
45
+ logger.propagate = False
46
+
47
+ if not logger.handlers:
48
+ # Explicitly attach to stdout
49
+ stdout_handler = logging.StreamHandler(sys.stdout)
50
+ stdout_handler.setLevel(logging.INFO)
51
+ formatter = logging.Formatter(
52
+ fmt='[%(asctime)s] %(levelname)s: %(message)s',
53
+ datefmt='%I:%M:%S %p'
54
+ )
55
+ stdout_handler.setFormatter(formatter)
56
+ logger.addHandler(stdout_handler)
57
+
58
+ # Provide a root warning override just in case, but rely entirely on our dedicated logger
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  logging.getLogger("uvicorn.access").setLevel(logging.WARNING)
60
 
61
  # ==============================================================================