|
@@ -1,6 +1,10 @@
|
|
|
|
|
+from copy import deepcopy
|
|
|
|
|
+from typing import Any
|
|
|
|
|
+
|
|
|
from fastapi import FastAPI, Request
|
|
from fastapi import FastAPI, Request
|
|
|
from fastapi.exceptions import RequestValidationError
|
|
from fastapi.exceptions import RequestValidationError
|
|
|
from fastapi.responses import JSONResponse
|
|
from fastapi.responses import JSONResponse
|
|
|
|
|
+from uvicorn.config import LOGGING_CONFIG
|
|
|
|
|
|
|
|
from app.api.bacnet import router as bacnet_router
|
|
from app.api.bacnet import router as bacnet_router
|
|
|
from app.api.modbus import router as modbus_router
|
|
from app.api.modbus import router as modbus_router
|
|
@@ -8,6 +12,15 @@ from app.api.s7 import router as s7_router
|
|
|
from app.response import response_payload
|
|
from app.response import response_payload
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+def uvicorn_log_config() -> dict[str, Any]:
|
|
|
|
|
+ config = deepcopy(LOGGING_CONFIG)
|
|
|
|
|
+ config["formatters"]["default"]["fmt"] = "%(asctime)s %(levelprefix)s %(message)s"
|
|
|
|
|
+ config["formatters"]["default"]["datefmt"] = "%Y-%m-%d %H:%M:%S"
|
|
|
|
|
+ config["formatters"]["access"]["fmt"] = '%(asctime)s %(levelprefix)s %(client_addr)s - "%(request_line)s" %(status_code)s'
|
|
|
|
|
+ config["formatters"]["access"]["datefmt"] = "%Y-%m-%d %H:%M:%S"
|
|
|
|
|
+ return config
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
def validation_error_message(exc: RequestValidationError) -> str:
|
|
def validation_error_message(exc: RequestValidationError) -> str:
|
|
|
messages: list[str] = []
|
|
messages: list[str] = []
|
|
|
for error in exc.errors():
|
|
for error in exc.errors():
|
|
@@ -57,4 +70,4 @@ app = create_app()
|
|
|
def main() -> None:
|
|
def main() -> None:
|
|
|
import uvicorn
|
|
import uvicorn
|
|
|
|
|
|
|
|
- uvicorn.run(app, host="0.0.0.0", port=8000)
|
|
|
|
|
|
|
+ uvicorn.run(app, host="0.0.0.0", port=8000, log_config=uvicorn_log_config())
|