mirror of
https://github.com/thib8956/nginx-proxy
synced 2025-07-01 14:25:46 +00:00
Add more control over log_format config directive
Introduces 3 new environmental variables: - `LOG_FORMAT` - `LOG_FORMAT_ESCAPE` - `LOG_JSON` `LOG_FORMAT` and `LOG_FORMAT_ESCAPE` default to standard values. When `LOG_JSON` is set, defaults are changed to: `{"time_local":"$time_iso8601","client_ip":"$http_x_forwarded_for","remote_addr":"$remote_addr","request":"$request","status":"$status","body_bytes_sent":"$body_bytes_sent","request_time":"$request_time","upstream_response_time":"$upstream_response_time","upstream_addr":"$upstream_addr","http_referrer":"$http_referer","http_user_agent":"$http_user_agent","request_id":"$request_id"}`and `json`. See `nginx.tmpl` and https://nginx.org/en/docs/http/ngx_http_log_module.html#log_format for details
This commit is contained in:
committed by
Nicolas Duchon
parent
e50429e87e
commit
de9809a9e5
14
test/test_log_json.py
Normal file
14
test/test_log_json.py
Normal file
@ -0,0 +1,14 @@
|
||||
import pytest
|
||||
|
||||
def test_log_json(docker_compose, nginxproxy):
|
||||
log_conf = [line for line in nginxproxy.get_conf().decode('ASCII').splitlines() if "log_format vhost escape=" in line]
|
||||
assert "{\"time_local\":\"$time_iso8601\"," in log_conf[0]
|
||||
|
||||
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 "{\"time_local\":" in line]
|
||||
assert "GET /port" in docker_logs[0]
|
15
test/test_log_json.yml
Normal file
15
test/test_log_json.yml
Normal file
@ -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_JSON: 1
|
16
test/test_log_json_format.py
Normal file
16
test/test_log_json_format.py
Normal file
@ -0,0 +1,16 @@
|
||||
import pytest
|
||||
|
||||
def test_log_json_format(docker_compose, nginxproxy):
|
||||
log_conf = [line for line in nginxproxy.get_conf().decode('ASCII').splitlines() if "log_format vhost escape=" in line]
|
||||
assert "{\"time_local\":\"$time_iso8601\"," in log_conf[0]
|
||||
|
||||
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 "{\"time_local\":" in line]
|
||||
assert "GET /port" in docker_logs[0]
|
||||
|
||||
|
15
test/test_log_json_format.yml
Normal file
15
test/test_log_json_format.yml
Normal file
@ -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: '{"time_local":"$$time_iso8601","remote_addr":"$$remote_addr","request":"$$request","upstream_addr":"$$upstream_addr"}'
|
Reference in New Issue
Block a user