Enhance logging configuration in WSGI setup for better debugging and error handling

This commit is contained in:
Ross
2026-03-02 11:04:51 +00:00
parent b3f5684e69
commit 12e3d47600
2 changed files with 71 additions and 4 deletions
+66 -1
View File
@@ -4800,6 +4800,11 @@ def series_dicom_json(request, pk):
def series_tags_partial(request, pk):
logger.info(f"Fetching tags for series {pk}")
try:
print(f"series_tags_partial hit: {pk}")
except Exception:
pass
# Accept either a numeric PK or a SeriesInstanceUID string
series = None
try:
@@ -4809,18 +4814,78 @@ def series_tags_partial(request, pk):
series = None
if series is None:
# Try exact match first
series = Series.objects.filter(series_instance_uid=pk).first()
if series is None:
return HttpResponse(status=404)
# Try URL-decoded value and stripped variants
try:
import urllib.parse
decoded = urllib.parse.unquote(pk)
except Exception:
decoded = pk
if decoded != pk:
series = Series.objects.filter(series_instance_uid=decoded).first()
if series is None:
# Fallback to contains (be permissive for slightly mangled UIDs)
try:
series = Series.objects.filter(series_instance_uid__contains=pk).first()
except Exception:
series = None
images = None
if series is not None:
images = list(series.images.all())
else:
# If no Series exists yet, try to find uploaded uncategorised dicoms
try:
dicoms = UncategorisedDicom.objects.filter(series_instance_uid=pk)
except Exception:
dicoms = UncategorisedDicom.objects.none()
if not dicoms.exists():
try:
import urllib.parse
decoded = urllib.parse.unquote(pk)
except Exception:
decoded = pk
if decoded != pk:
dicoms = UncategorisedDicom.objects.filter(series_instance_uid=decoded)
if not dicoms.exists():
try:
dicoms = UncategorisedDicom.objects.filter(series_instance_uid__contains=pk)
except Exception:
dicoms = UncategorisedDicom.objects.none()
if not dicoms.exists():
return HttpResponse(status=404)
images = list(dicoms)
num_images = len(images)
tag_values = {}
tag_counts = {}
for img in images:
# Uploaded uncategorised dicoms use a different API than SeriesImage
try:
if isinstance(img, UncategorisedDicom):
try:
ds = pydicom.dcmread(img.image)
except Exception:
# skip invalid dicoms
continue
else:
ds = img.get_dicom_data()
except Exception:
# Defensive: skip items that don't expose expected methods
continue
if not ds:
continue
# Iterate elements
+3 -1
View File
@@ -34,12 +34,14 @@ try:
enqueue=True,
serialize=True,
)
logger.debug("Loguru logging configured with stdout and file sinks")
except Exception:
# Best-effort only — don't crash WSGI startup if logging can't be configured
try:
logger.add(sys.stderr)
logger.add(sys.stderr, level="DEBUG", enqueue=True, backtrace=False, diagnose=False)
except Exception:
pass
logger.debug("Failed to configure Loguru logging sinks, continuing without file logging")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "rad.settings")