diff --git a/.env.sample b/.env.sample index dae16cb..3d8f5d2 100644 --- a/.env.sample +++ b/.env.sample @@ -10,6 +10,8 @@ LETS_ENCRYPT_ENV=production ## All config: https://docs.mealie.io/documentation/getting-started/installation/backend-config/ ALLOW_SIGNUP=false LOG_LEVEL=warn +# We use a custom log config to prevent logging to the filesystem and only log to stdout/stderr +LOG_CONFIG_OVERRIDE=/app/logconf-override.json # TOKEN_TIME=8765 # TZ=UTC diff --git a/compose.yml b/compose.yml index 9c0a5c6..8badb3b 100644 --- a/compose.yml +++ b/compose.yml @@ -29,6 +29,14 @@ services: - DB_ENGINE=sqlite # Upstream mistakenly adds the user to 1000 instead of 911 - PGID=1000 + configs: + - source: log_config + target: /app/logconf-override.json + +configs: + log_config: + name: ${STACK_NAME}_log_config_${LOG_CONFIG_VERSION} + file: logconf-override.json networks: proxy: diff --git a/logconf-override.json b/logconf-override.json new file mode 100644 index 0000000..6e5baea --- /dev/null +++ b/logconf-override.json @@ -0,0 +1,63 @@ +{ + "version": 1, + "disable_existing_loggers": false, + "formatters": { + "simple": { + "format": "%(levelname)-8s %(asctime)s - %(message)s", + "datefmt": "%Y-%m-%dT%H:%M:%S" + }, + "detailed": { + "format": "[%(levelname)s|%(module)s|L%(lineno)d] %(asctime)s: %(message)s", + "datefmt": "%Y-%m-%dT%H:%M:%S" + }, + "access": { + "()": "uvicorn.logging.AccessFormatter", + "fmt": "%(levelname)-8s %(asctime)s - [%(client_addr)s] %(status_code)s \"%(request_line)s\"", + "datefmt": "%Y-%m-%dT%H:%M:%S" + } + }, + "handlers": { + "stderr": { + "class": "logging.StreamHandler", + "level": "WARNING", + "formatter": "simple", + "stream": "ext://sys.stderr" + }, + "stdout": { + "class": "logging.StreamHandler", + "level": "${LOG_LEVEL}", + "formatter": "simple", + "stream": "ext://sys.stdout" + }, + "access": { + "class": "logging.StreamHandler", + "level": "${LOG_LEVEL}", + "formatter": "access", + "stream": "ext://sys.stdout" + } + }, + "loggers": { + "root": { + "level": "${LOG_LEVEL}", + "handlers": [ + "stderr", + "stdout" + ] + }, + "uvicorn.error": { + "handlers": [ + "stderr", + "stdout" + ], + "level": "${LOG_LEVEL}", + "propagate": false + }, + "uvicorn.access": { + "handlers": [ + "access" + ], + "level": "${LOG_LEVEL}", + "propagate": false + } + } +}