From 5e62436d5406403a2e20c5abfc2dc09e30d7867e Mon Sep 17 00:00:00 2001 From: Julien Maupetit Date: Wed, 27 Mar 2024 18:49:08 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7(api)=20update=20start=20up=20scrip?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We needed more flexibility to handle development vs production run. --- src/api/Procfile | 2 +- src/api/logging-config.dev.yaml | 39 ++++++++++++++++++++++++++++++++ src/api/logging-config.prod.yaml | 39 ++++++++++++++++++++++++++++++++ src/api/start.sh | 33 +++++++++++++++++++++++++++ 4 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 src/api/logging-config.dev.yaml create mode 100644 src/api/logging-config.prod.yaml create mode 100755 src/api/start.sh diff --git a/src/api/Procfile b/src/api/Procfile index d565511a..2a71006e 100644 --- a/src/api/Procfile +++ b/src/api/Procfile @@ -1 +1 @@ -web: uvicorn qualicharge.api:app --proxy-headers --host 0.0.0.0 --port $PORT +web: bash ./start.sh diff --git a/src/api/logging-config.dev.yaml b/src/api/logging-config.dev.yaml new file mode 100644 index 00000000..b55da1c1 --- /dev/null +++ b/src/api/logging-config.dev.yaml @@ -0,0 +1,39 @@ +--- +version: 1 +disable_existing_loggers: false +formatters: + default: + "()": uvicorn.logging.DefaultFormatter + fmt: "%(levelprefix)s %(message)s" + use_colors: true + access: + "()": uvicorn.logging.AccessFormatter + fmt: '%(levelprefix)s %(client_addr)s - "%(request_line)s" %(status_code)s' + use_colors: true +handlers: + default: + formatter: default + class: logging.StreamHandler + stream: ext://sys.stderr + access: + formatter: access + class: logging.StreamHandler + stream: ext://sys.stdout +loggers: + uvicorn: + handlers: + - default + level: INFO + propagate: false + uvicorn.error: + level: INFO + uvicorn.access: + handlers: + - access + level: INFO + propagate: false + qualicharge: + handlers: + - default + level: DEBUG + propagate: false diff --git a/src/api/logging-config.prod.yaml b/src/api/logging-config.prod.yaml new file mode 100644 index 00000000..7fd143e6 --- /dev/null +++ b/src/api/logging-config.prod.yaml @@ -0,0 +1,39 @@ +--- +version: 1 +disable_existing_loggers: false +formatters: + default: + "()": uvicorn.logging.DefaultFormatter + fmt: "%(levelprefix)s %(message)s" + use_colors: true + access: + "()": uvicorn.logging.AccessFormatter + fmt: '%(levelprefix)s %(client_addr)s - "%(request_line)s" %(status_code)s' + use_colors: true +handlers: + default: + formatter: default + class: logging.StreamHandler + stream: ext://sys.stdout + access: + formatter: access + class: logging.StreamHandler + stream: ext://sys.stdout +loggers: + uvicorn: + handlers: + - default + level: INFO + propagate: false + uvicorn.error: + level: INFO + uvicorn.access: + handlers: + - access + level: INFO + propagate: false + qualicharge: + handlers: + - default + level: WARNING + propagate: false diff --git a/src/api/start.sh b/src/api/start.sh new file mode 100755 index 00000000..739432a3 --- /dev/null +++ b/src/api/start.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +# We may expect that the following environment variables are set: +# +# - PORT: the server port +# - QUALICHARGE_DEBUG: activate the debug mode (for development) [*] +# +# [*] optional + +set -eo pipefail + +declare -i debug=${QUALICHARGE_DEBUG:-0} +declare -a extra_opts + +if [ ${debug} == 1 ]; then + extra_opts=( + "--reload" \ + "--log-config logging-config.dev.yaml" + ) + echo "⚗️ DEBUG mode activated. We hope your are not running in production. 🤞" +else + extra_opts=( + "--log-config logging-config.prod.yaml" + ) +fi + +# shellcheck disable=SC2068 +uvicorn \ + qualicharge.api:app \ + --proxy-headers \ + --host 0.0.0.0 \ + --port "${PORT}" \ + ${extra_opts[@]}