Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

475
Views
¿Cómo agregar una marca de tiempo a cada solicitud en los registros de uvicorn?

Cuando ejecuto mi servidor FastAPI usando uvicorn:

 uvicorn main:app --host 0.0.0.0 --port 8000 --log-level info

El registro que obtengo después de ejecutar el servidor:

 INFO: Started server process [405098] INFO: Waiting for application startup. INFO: Connect to database... INFO: Successfully connected to the database! INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) INFO: 122.179.31.158:54604 - "GET /api/hello_world?num1=5&num2=10 HTTP/1.1" 200 OK

¿Cómo obtengo la marca de tiempo junto con el registro de la solicitud? Me gusta:

 INFO: "2020-07-16:23:34:78" - 122.179.31.158:54604 - "GET /api/hello_world?num1=5&num2=10 HTTP/1.1" 200 OK
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Puedes usar LOGGING_CONFIG de LOGGING_CONFIG

 import uvicorn from uvicorn.config import LOGGING_CONFIG from fastapi import FastAPI app = FastAPI() def run(): LOGGING_CONFIG["formatters"]["default"]["fmt"] = "%(asctime)s [%(name)s] %(levelprefix)s %(message)s" uvicorn.run(app) if __name__ == '__main__': run()

Que devolverá el registro de uvicornio con la marca de tiempo

 2020-08-20 02:33:53,765 [uvicorn.error] INFO: Started server process [107131] 2020-08-20 02:33:53,765 [uvicorn.error] INFO: Waiting for application startup. 2020-08-20 02:33:53,765 [uvicorn.error] INFO: Application startup complete. 2020-08-20 02:33:53,767 [uvicorn.error] INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
over 4 years ago · Santiago Trujillo Report

0

Puede crear una configuración de registrador de dictados e inicializarla usando la función dictConfig en su aplicación principal.

 #main.py from logging.config import dictConfig from config import log_config from fastapi import FastAPI dictConfig(log_config.sample_logger) app = FastAPI() @app.get("/") async def root(): return {"message": "Hello World"} #config/log_config.py sample_logger = { "version": 1, "disable_existing_loggers": False, "formatters": { "access": { "()": "uvicorn.logging.AccessFormatter", "fmt": '%(levelprefix)s %(asctime)s :: %(client_addr)s - "%(request_line)s" %(status_code)s', "use_colors": True }, }, "handlers": { "access": { "formatter": "access", "class": "logging.StreamHandler", "stream": "ext://sys.stdout", }, }, "loggers": { "uvicorn.access": { "handlers": ["access"], "level": "INFO", "propagate": False }, }, }
over 4 years ago · Santiago Trujillo Report

0

Combinando las respuestas de @Yagiz Degirmenci y @HappyFace, obtuve este código.

 LOGGING_CONFIG["formatters"]["default"]["fmt"] = "%(asctime)s [%(name)s] %(levelprefix)s %(message)s" LOGGING_CONFIG["formatters"]["access"][ "fmt"] = '%(asctime)s [%(name)s] %(levelprefix)s %(client_addr)s - "%(request_line)s" %(status_code)s'

El registro le gusta esto:

 2021-03-31 18:38:22,728 [uvicorn.error] INFO: Started server process [21824] 2021-03-31 18:38:22,729 [uvicorn.error] INFO: Waiting for application startup. 2021-03-31 18:38:22,729 [uvicorn.error] INFO: Application startup complete. 2021-03-31 18:38:22,729 [uvicorn.error] INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) 2021-03-31 18:38:26,359 [uvicorn.access] INFO: 127.0.0.1:51932 - "POST /limit HTTP/1.1" 200 OK
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!