You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by me...@apache.org on 2020/10/30 08:07:34 UTC
[apisix] branch master updated: feat: support `json` encoding
escape for access logs (#2269)
This is an automated email from the ASF dual-hosted git repository.
membphis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix.git
The following commit(s) were added to refs/heads/master by this push:
new f2f5ab9 feat: support `json` encoding escape for access logs (#2269)
f2f5ab9 is described below
commit f2f5ab97663805509baf3355c37336ffa557b68c
Author: YuanSheng Wang <me...@gmail.com>
AuthorDate: Fri Oct 30 16:07:24 2020 +0800
feat: support `json` encoding escape for access logs (#2269)
fix #2266 .
---
.travis/apisix_cli_test.sh | 31 +++++++++++++++++++++++++++++++
bin/apisix | 2 +-
conf/config-default.yaml | 1 +
3 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/.travis/apisix_cli_test.sh b/.travis/apisix_cli_test.sh
index 091ff92..5f88ecd 100755
--- a/.travis/apisix_cli_test.sh
+++ b/.travis/apisix_cli_test.sh
@@ -441,3 +441,34 @@ if [ $count -ne 1 ]; then
fi
echo "passed: using env to set worker processes"
+
+# access log with JSON format
+
+echo '
+nginx_config:
+ http:
+ access_log_format: |-
+ {"@timestamp": "$time_iso8601", "client_ip": "$remote_addr", "status": "$status"}
+ access_log_format_escape: json
+' > conf/config.yaml
+
+make init
+make run
+sleep 0.1
+curl http://127.0.0.1:9080/hello2
+sleep 4
+tail -n 1 logs/access.log > output.log
+
+if [ `grep -c '"client_ip": "127.0.0.1"' output.log` -eq '0' ]; then
+ echo "failed: invalid JSON log in access log"
+ exit 1
+fi
+
+if [ `grep -c 'main escape=json' conf/nginx.conf` -eq '0' ]; then
+ echo "failed: not found \"escape=json\" in conf/nginx.conf"
+ exit 1
+fi
+
+make stop
+
+echo "passed: access log with JSON format"
diff --git a/bin/apisix b/bin/apisix
index 2e72a31..d600d2b 100755
--- a/bin/apisix
+++ b/bin/apisix
@@ -239,7 +239,7 @@ http {
lua_regex_match_limit 100000;
lua_regex_cache_max_entries 8192;
- log_format main '{* http.access_log_format *}';
+ log_format main escape={* http.access_log_format_escape *} '{* http.access_log_format *}';
access_log {* http.access_log *} main buffer=16384 flush=3;
open_file_cache max=1000 inactive=60;
diff --git a/conf/config-default.yaml b/conf/config-default.yaml
index ef9331f..f94bda9 100644
--- a/conf/config-default.yaml
+++ b/conf/config-default.yaml
@@ -126,6 +126,7 @@ nginx_config: # config for render the template to genarate n
http:
access_log: "logs/access.log"
access_log_format: "$remote_addr - $remote_user [$time_local] $http_host \"$request\" $status $body_bytes_sent $request_time \"$http_referer\" \"$http_user_agent\" $upstream_addr $upstream_status $upstream_response_time"
+ access_log_format_escape: default # allows setting json or default characters escaping in variables
keepalive_timeout: 60s # timeout during which a keep-alive client connection will stay open on the server side.
client_header_timeout: 60s # timeout for reading client request header, then 408 (Request Time-out) error is returned to the client
client_body_timeout: 60s # timeout for reading client request body, then 408 (Request Time-out) error is returned to the client