Spaces:
Sleeping
Sleeping
Claude Code Claude Opus 4.6 commited on
Commit ·
b4b8c2c
1
Parent(s): 02a1ea1
Claude Code: Add CRITICAL STARTUP ERROR logging and stdout capture
Browse files- Wrap uvicorn startup with try-except using requested error format
- Add stdout handler to logging config for immediate capture
- Fix uvicorn log_config parameter to use proper defaults
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
app.py
CHANGED
|
@@ -24,11 +24,15 @@ def get_app():
|
|
| 24 |
|
| 25 |
print(">>> CAIN: Creating FastAPI app...", flush=True)
|
| 26 |
|
| 27 |
-
# Configure
|
| 28 |
logging.basicConfig(
|
| 29 |
level=logging.INFO,
|
| 30 |
format='%(asctime)s - %(levelname)s - %(message)s',
|
| 31 |
-
handlers=[
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
)
|
| 33 |
logger = logging.getLogger(__name__)
|
| 34 |
logger.info(">>> CAIN: FastAPI initialization starting")
|
|
@@ -97,13 +101,12 @@ if __name__ == "__main__":
|
|
| 97 |
try:
|
| 98 |
port = int(os.environ.get('PORT', 7860))
|
| 99 |
print(f">>> CAIN: Starting uvicorn on port {port}...", flush=True, file=sys.stderr)
|
| 100 |
-
uvicorn.run("app:app", host="0.0.0.0", port=port, log_config=
|
| 101 |
except Exception as e:
|
| 102 |
-
# Log full stack trace
|
| 103 |
-
print(f"
|
| 104 |
-
print(f"
|
| 105 |
-
|
| 106 |
-
traceback.print_exc(file=sys.stderr)
|
| 107 |
sys.exit(1)
|
| 108 |
except KeyboardInterrupt:
|
| 109 |
print("\n>>> CAIN: Interrupted by user", flush=True, file=sys.stderr)
|
|
|
|
| 24 |
|
| 25 |
print(">>> CAIN: Creating FastAPI app...", flush=True)
|
| 26 |
|
| 27 |
+
# Configure logging to both stdout and stderr for immediate capture
|
| 28 |
logging.basicConfig(
|
| 29 |
level=logging.INFO,
|
| 30 |
format='%(asctime)s - %(levelname)s - %(message)s',
|
| 31 |
+
handlers=[
|
| 32 |
+
logging.StreamHandler(sys.stdout), # Force stdout immediate capture
|
| 33 |
+
logging.StreamHandler(sys.stderr)
|
| 34 |
+
],
|
| 35 |
+
force=True # Override any existing config
|
| 36 |
)
|
| 37 |
logger = logging.getLogger(__name__)
|
| 38 |
logger.info(">>> CAIN: FastAPI initialization starting")
|
|
|
|
| 101 |
try:
|
| 102 |
port = int(os.environ.get('PORT', 7860))
|
| 103 |
print(f">>> CAIN: Starting uvicorn on port {port}...", flush=True, file=sys.stderr)
|
| 104 |
+
uvicorn.run("app:app", host="0.0.0.0", port=port, log_config=None)
|
| 105 |
except Exception as e:
|
| 106 |
+
# Log full stack trace before exiting - use requested format
|
| 107 |
+
print(f"CRITICAL STARTUP ERROR: {e}", flush=True)
|
| 108 |
+
print(f"CRITICAL STARTUP ERROR: {e}", flush=True, file=sys.stderr)
|
| 109 |
+
traceback.print_exc()
|
|
|
|
| 110 |
sys.exit(1)
|
| 111 |
except KeyboardInterrupt:
|
| 112 |
print("\n>>> CAIN: Interrupted by user", flush=True, file=sys.stderr)
|