From 07cc80ac6bb2d390b4ba2b8e0332101a19df79e3 Mon Sep 17 00:00:00 2001 From: Vincent Herlemont Date: Fri, 27 Jan 2023 18:28:40 +0100 Subject: [PATCH] feat: Support LOG_FORMAT env variable (#2151) --- nginx.tmpl | 5 +---- test/test_log_format.py | 11 +++++++++++ test/test_log_format.yml | 15 +++++++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 test/test_log_format.py create mode 100644 test/test_log_format.yml diff --git a/nginx.tmpl b/nginx.tmpl index f2e2bcf..54872e4 100644 --- a/nginx.tmpl +++ b/nginx.tmpl @@ -210,10 +210,7 @@ map $proxy_x_forwarded_proto $proxy_x_forwarded_ssl { gzip_types text/plain text/css application/javascript application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; -log_format vhost '$host $remote_addr - $remote_user [$time_local] ' - '"$request" $status $body_bytes_sent ' - '"$http_referer" "$http_user_agent" ' - '"$upstream_addr"'; +log_format vhost '{{ or $globals.Env.LOG_FORMAT "$host $remote_addr - $remote_user [$time_local] \"$request\" $status $body_bytes_sent \"$http_referer\" \"$http_user_agent\" \"$upstream_addr\"" }}'; access_log off; diff --git a/test/test_log_format.py b/test/test_log_format.py new file mode 100644 index 0000000..589f0c7 --- /dev/null +++ b/test/test_log_format.py @@ -0,0 +1,11 @@ +import pytest + +def test_log_format(docker_compose, nginxproxy): + r = nginxproxy.get("http://nginx-proxy.test/port") + assert r.status_code == 200 + assert r.text == "answer from port 81\n" + sut_container = docker_compose.containers.get("sut") + docker_logs = sut_container.logs(stdout=True, stderr=True, stream=False, follow=False) + docker_logs = docker_logs.decode("utf-8").splitlines() + docker_logs = [line for line in docker_logs if "GET /port" in line] + assert "request_time=" in docker_logs[0] diff --git a/test/test_log_format.yml b/test/test_log_format.yml new file mode 100644 index 0000000..ef3bbf6 --- /dev/null +++ b/test/test_log_format.yml @@ -0,0 +1,15 @@ +web1: + image: web + expose: + - "81" + environment: + WEB_PORTS: 81 + VIRTUAL_HOST: nginx-proxy.test + +sut: + container_name: sut + image: nginxproxy/nginx-proxy:test + volumes: + - /var/run/docker.sock:/tmp/docker.sock:ro + environment: + LOG_FORMAT: "$$remote_addr - $$remote_user [$$time_local] \"$$request\" $$status $$body_bytes_sent \"$$http_referer\" \"$$http_user_agent\" request_time=$$request_time $$upstream_response_time"