This is an automated email from the ASF dual-hosted git repository.
tzssangglass 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 9f01ef8 fix(error-log-logger): avoid sending stale error log (#4690)
9f01ef8 is described below
commit 9f01ef8f2ca753557289ac9dc91f5212432fae73
Author: 罗泽轩 <[email protected]>
AuthorDate: Mon Aug 2 10:16:11 2021 +0800
fix(error-log-logger): avoid sending stale error log (#4690)
---
apisix/plugins/error-log-logger.lua | 14 ++++++++-----
t/plugin/error-log-logger.t | 39 ++++++++++++++++++++++++++++++++++++-
2 files changed, 47 insertions(+), 6 deletions(-)
diff --git a/apisix/plugins/error-log-logger.lua
b/apisix/plugins/error-log-logger.lua
index 70d5b1c..d7b04b6 100644
--- a/apisix/plugins/error-log-logger.lua
+++ b/apisix/plugins/error-log-logger.lua
@@ -25,7 +25,6 @@ local table = core.table
local schema_def = core.schema
local ngx = ngx
local tcp = ngx.socket.tcp
-local string = string
local tostring = tostring
local ipairs = ipairs
local lrucache = core.lrucache.new({
@@ -122,12 +121,12 @@ end
local function update_filter(value)
- local level = log_level[string.upper(value.level)]
+ local level = log_level[value.level]
local status, err = errlog.set_filter_level(level)
if not status then
return nil, "failed to set filter level by ngx.errlog, the error is :"
.. err
else
- core.log.debug("set the filter_level to ", config.level)
+ core.log.notice("set the filter_level to ", value.level)
end
return value
@@ -149,12 +148,17 @@ local function process()
end
+ local err_level = log_level[metadata.value.level]
local entries = {}
local logs = errlog.get_logs(9)
while ( logs and #logs>0 ) do
for i = 1, #logs, 3 do
- table.insert(entries, logs[i + 2])
- table.insert(entries, "\n")
+ -- There will be some stale error logs after the filter level
changed.
+ -- We should avoid reporting them.
+ if logs[i] <= err_level then
+ table.insert(entries, logs[i + 2])
+ table.insert(entries, "\n")
+ end
end
logs = errlog.get_logs(9)
end
diff --git a/t/plugin/error-log-logger.t b/t/plugin/error-log-logger.t
index 0fc9f2c..2d2792f 100644
--- a/t/plugin/error-log-logger.t
+++ b/t/plugin/error-log-logger.t
@@ -327,7 +327,44 @@ qr/please set the correct plugin_metadata for
error-log-logger/
-=== TEST 10: delete the route
+=== TEST 10: avoid sending stale error log
+--- yaml_config
+apisix:
+ enable_admin: true
+ admin_key: null
+plugins:
+ - error-log-logger
+--- config
+ location /tg {
+ content_by_lua_block {
+ local core = require("apisix.core")
+ local t = require("lib.test_admin").test
+ core.log.warn("this is a warning message for test.")
+ local code, body =
t('/apisix/admin/plugin_metadata/error-log-logger',
+ ngx.HTTP_PUT,
+ [[{
+ "host": "127.0.0.1",
+ "port": 1999,
+ "level": "ERROR",
+ "inactive_timeout": 1
+ }]]
+ )
+ ngx.sleep(2)
+ core.log.error("this is an error message for test.")
+ }
+ }
+--- request
+GET /tg
+--- response_body
+--- no_error_log eval
+qr/\[Server\] receive data:.*this is a warning message for test./
+--- error_log eval
+qr/\[Server\] receive data:.*this is an error message for test./
+--- wait: 5
+
+
+
+=== TEST 11: delete the route
--- yaml_config
apisix:
enable_admin: true