| 知乎专栏 |
#!/usr/bin/env python
# -*- coding: utf-8 -*-
##############################################
# Home : https://www.netkiller.cn
# Author: Neo <netkiller@msn.com>
# Upgrade: 2023-07-07
##############################################
try:
import uvicorn, logging, sys
from config import LOGFILE
except ImportError as err:
print("ImportError: %s" % (err))
exit()
LOGGING_CONFIG = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"default": {
"()": "uvicorn.logging.DefaultFormatter",
"fmt": "%(levelprefix)s %(message)s",
"use_colors": None,
},
"access": {
"()": "uvicorn.logging.AccessFormatter",
"fmt": '%(levelprefix)s %(client_addr)s - "%(request_line)s" %(status_code)s',
},
},
"handlers": {
"default": {"formatter": "default", "class": "logging.handlers.TimedRotatingFileHandler", "filename": LOGFILE},
"access": {"formatter": "access", "class": "logging.handlers.TimedRotatingFileHandler", "filename": f"{LOGFILE}.access.log"},
},
"loggers": {
"": {"handlers": ["default"], "level": "INFO"},
"uvicorn.error": {"level": "INFO"},
"uvicorn.access": {"handlers": ["access"], "level": "INFO", "propagate": False},
},
}
if __name__ == "__main__":
try:
uvicorn.run(app="main:app", host="0.0.0.0", port=8000, workers=4, log_config=LOGGING_CONFIG)
except KeyboardInterrupt:
print("Crtl+C Pressed. Shutting down.")
输出结果
docker@debian:~$ tail /tmp/uvicorn.access.log INFO: 172.16.0.102:61485 - "GET / HTTP/1.1" 200 OK INFO: 172.16.0.102:61485 - "GET / HTTP/1.1" 304 Not Modified INFO: 172.16.0.102:61485 - "GET / HTTP/1.1" 304 Not Modified INFO: 172.16.0.102:61485 - "GET / HTTP/1.1" 304 Not Modified INFO: 172.16.0.102:61485 - "GET / HTTP/1.1" 304 Not Modified docker@debian:~$ tail /tmp/uvicorn.log INFO: Waiting for application startup. INFO: Application startup complete. INFO: OPENAI_API_KEY=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 INFO: Started server process [21112] INFO: Waiting for application startup. INFO: Application startup complete. INFO: OPENAI_API_KEY=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 INFO: Started server process [21110] INFO: Waiting for application startup. INFO: Application startup complete.