Improve production request logging

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
funnywolf
2026-07-06 14:52:22 +08:00
co-authored by Copilot
parent fae594ccd7
commit c11a5fca63
6 changed files with 26 additions and 2 deletions
+6
View File
@@ -1,5 +1,6 @@
import json
import logging
from uuid import uuid4
from rest_framework.views import exception_handler
@@ -50,6 +51,10 @@ def _query_params(request):
return _redact({key: values if len(values) != 1 else values[0] for key, values in request.GET.lists()})
def _request_id(request):
return request.headers.get("X-Request-ID") or f"req_{uuid4().hex}"
def _user_context(request):
user = getattr(request, "user", None)
if not user or not getattr(user, "is_authenticated", False):
@@ -71,6 +76,7 @@ def _event(exc, context, response=None):
request = context.get("request")
response_data = _serializable(getattr(response, "data", None)) if response is not None else None
return {
"request_id": _request_id(request) if request is not None else "",
"method": getattr(request, "method", ""),
"path": getattr(request, "path", ""),
"query_params": _query_params(request) if request is not None else {},
+3 -1
View File
@@ -93,9 +93,11 @@ After changing only script or YAML definitions, use **System Settings > Runtime
## Logs
Backend process logs are mounted to `./logs`:
Nginx and backend process logs are mounted to `./logs`:
```text
logs/nginx/access.log
logs/nginx/error.log
logs/django.log
logs/asgi.log
logs/agentic-module-worker.log
+3 -1
View File
@@ -93,9 +93,11 @@ ASP_RUSTFS_CONSOLE_PORT=9001
## 日志
后端进程日志会挂载到 `./logs`
Nginx 和后端进程日志会挂载到 `./logs`
```text
logs/nginx/access.log
logs/nginx/error.log
logs/django.log
logs/asgi.log
logs/agentic-module-worker.log
+1
View File
@@ -29,6 +29,7 @@ services:
volumes:
- static-files:/usr/share/nginx/backend-static:ro
- ./certs:/etc/nginx/certs
- ./logs/nginx:/var/log/asp/nginx
depends_on:
asp-web:
condition: service_healthy
+13
View File
@@ -1,7 +1,17 @@
log_format asp_main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" "$http_user_agent" '
'request_id=$request_id request_time=$request_time '
'upstream_addr="$upstream_addr" upstream_status="$upstream_status" '
'upstream_response_time="$upstream_response_time"';
server {
listen 443 ssl;
http2 on;
server_name _;
access_log /var/log/nginx/access.log asp_main;
access_log /var/log/asp/nginx/access.log asp_main;
error_log /var/log/nginx/error.log warn;
error_log /var/log/asp/nginx/error.log warn;
ssl_certificate /etc/nginx/certs/asp.crt;
ssl_certificate_key /etc/nginx/certs/asp.key;
@@ -21,6 +31,7 @@ server {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Request-ID $request_id;
proxy_buffering off;
}
@@ -30,6 +41,7 @@ server {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Request-ID $request_id;
}
location /admin/ {
@@ -38,6 +50,7 @@ server {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Request-ID $request_id;
}
location /static/ {