chore: structured timestamped logging across the backend
- uvicorn --log-config (log_config.json): timestamped formatters for uvicorn access/error and the app's own "subfeed" loggers (ms precision) - Log key activity: startup/shutdown, login/denied, token refresh, YouTube API errors, subscription imports, sync pause/resume - Background sync jobs no longer swallow errors silently — failures in RSS poll, backfill, enrichment, autotag and resync are logged with tracebacks
This commit is contained in:
parent
ecaf516429
commit
f6c5488566
9 changed files with 86 additions and 7 deletions
|
|
@ -5,15 +5,20 @@ from pathlib import Path
|
|||
|
||||
from fastapi import FastAPI, HTTPException
|
||||
|
||||
# Make our own loggers (e.g. the scheduler) visible in container logs — uvicorn's
|
||||
# logging config otherwise filters out INFO from non-uvicorn loggers.
|
||||
# When started via uvicorn --log-config the "subfeed" logger is already configured
|
||||
# (see log_config.json). This block is a timestamped fallback for other entrypoints
|
||||
# (tests, scripts) so our logs are never silently dropped.
|
||||
_subfeed_logger = logging.getLogger("subfeed")
|
||||
if not _subfeed_logger.handlers:
|
||||
_handler = logging.StreamHandler(sys.stdout)
|
||||
_handler.setFormatter(logging.Formatter("%(levelname)s [%(name)s] %(message)s"))
|
||||
_handler.setFormatter(
|
||||
logging.Formatter("%(asctime)s %(levelname)-5s [%(name)s] %(message)s")
|
||||
)
|
||||
_subfeed_logger.addHandler(_handler)
|
||||
_subfeed_logger.setLevel(logging.INFO)
|
||||
_subfeed_logger.propagate = False
|
||||
_subfeed_logger.setLevel(logging.INFO)
|
||||
_subfeed_logger.propagate = False
|
||||
|
||||
log = logging.getLogger("subfeed.app")
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from fastapi.responses import FileResponse
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
|
|
@ -27,10 +32,12 @@ from app.scheduler import shutdown_scheduler, start_scheduler
|
|||
|
||||
@asynccontextmanager
|
||||
async def lifespan(app: FastAPI):
|
||||
log.info("Subfeed starting up")
|
||||
start_scheduler()
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
log.info("Subfeed shutting down")
|
||||
shutdown_scheduler()
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue