Spaces:
Sleeping
Sleeping
Update main.py
Browse files
main.py
CHANGED
|
@@ -26,14 +26,19 @@ load_dotenv()
|
|
| 26 |
# LOGGING (Task 5)
|
| 27 |
# ==============================================================================
|
| 28 |
IST = timezone(timedelta(hours=5, minutes=30))
|
| 29 |
-
logging.Formatter.converter = lambda *args: datetime.fromtimestamp(args[-1], tz=IST).timetuple()
|
| 30 |
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
)
|
| 36 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
|
| 38 |
# ==============================================================================
|
| 39 |
# CONFIGURATION
|
|
@@ -1003,33 +1008,7 @@ if __name__ == "__main__":
|
|
| 1003 |
elif args.run:
|
| 1004 |
# Launch FastAPI which internally starts the loop
|
| 1005 |
port = int(os.getenv("PORT", 7860))
|
| 1006 |
-
|
| 1007 |
-
LOGGING_CONFIG = {
|
| 1008 |
-
"version": 1,
|
| 1009 |
-
"disable_existing_loggers": False,
|
| 1010 |
-
"formatters": {
|
| 1011 |
-
"default": {
|
| 1012 |
-
"()": "uvicorn.logging.DefaultFormatter",
|
| 1013 |
-
"fmt": "[%(asctime)s] %(levelname)s: %(message)s",
|
| 1014 |
-
"use_colors": False,
|
| 1015 |
-
},
|
| 1016 |
-
},
|
| 1017 |
-
"handlers": {
|
| 1018 |
-
"default": {
|
| 1019 |
-
"formatter": "default",
|
| 1020 |
-
"class": "logging.StreamHandler",
|
| 1021 |
-
"stream": "ext://sys.stdout",
|
| 1022 |
-
},
|
| 1023 |
-
},
|
| 1024 |
-
"loggers": {
|
| 1025 |
-
"uvicorn": {"handlers": ["default"], "level": "INFO", "propagate": False},
|
| 1026 |
-
"uvicorn.error": {"level": "INFO"},
|
| 1027 |
-
"uvicorn.access": {"handlers": ["default"], "level": "WARNING", "propagate": False},
|
| 1028 |
-
"__main__": {"handlers": ["default"], "level": "INFO", "propagate": False},
|
| 1029 |
-
},
|
| 1030 |
-
}
|
| 1031 |
-
|
| 1032 |
-
uvicorn.run(app, host="0.0.0.0", port=port, log_config=LOGGING_CONFIG)
|
| 1033 |
else:
|
| 1034 |
# Default behavior: run FastAPI
|
| 1035 |
port = int(os.getenv("PORT", 7860))
|
|
|
|
| 26 |
# LOGGING (Task 5)
|
| 27 |
# ==============================================================================
|
| 28 |
IST = timezone(timedelta(hours=5, minutes=30))
|
|
|
|
| 29 |
|
| 30 |
+
class PrintLogger:
|
| 31 |
+
"""A brute-force custom logger that completely bypasses Uvicorn's logging module handlers."""
|
| 32 |
+
def info(self, msg):
|
| 33 |
+
print(f"[{datetime.now(IST).strftime('%I:%M:%S %p')}] INFO: {msg}", flush=True)
|
| 34 |
+
def warning(self, msg):
|
| 35 |
+
print(f"[{datetime.now(IST).strftime('%I:%M:%S %p')}] WARNING: {msg}", flush=True)
|
| 36 |
+
def error(self, msg):
|
| 37 |
+
print(f"[{datetime.now(IST).strftime('%I:%M:%S %p')}] ERROR: {msg}", flush=True)
|
| 38 |
+
def debug(self, msg):
|
| 39 |
+
pass # Suppress debug logs by default to keep console clean
|
| 40 |
+
|
| 41 |
+
logger = PrintLogger()
|
| 42 |
|
| 43 |
# ==============================================================================
|
| 44 |
# CONFIGURATION
|
|
|
|
| 1008 |
elif args.run:
|
| 1009 |
# Launch FastAPI which internally starts the loop
|
| 1010 |
port = int(os.getenv("PORT", 7860))
|
| 1011 |
+
uvicorn.run(app, host="0.0.0.0", port=port, log_level="warning")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1012 |
else:
|
| 1013 |
# Default behavior: run FastAPI
|
| 1014 |
port = int(os.getenv("PORT", 7860))
|