文档里面这里说的:
- 由于在 content_by_lua* 阶段变量的生命周期会随着请求的终结而终结,所以当日志量小于 flush_limit 的情况下这些日志就不能被累积,也不会触发 _flush_buffer 函数,所以小日志会丢失。
- 这些坑回头看来这么明显,所有的问题都是因为我们把 lua/log.lua 用错阶段了,应该放到 log_by_lua* 阶段,所有的问题都不复存在。
虽然小于flush_limit的内容不会flush,但是会放到 模块变量log_buffer_data这个数组中
local function _write_buffer(msg, len)
log_buffer_index = log_buffer_index + 1
log_buffer_data[log_buffer_index] = msg
buffer_size = buffer_size + len
return buffer_size
end
我的两个疑问:
- 既然模块变量会缓存,那么下次就会把之前累加的内容一起给发送了,为什么你这里写的不会累加?
- 而且就算放到log_by_lua阶段,小于flush_limit的内容,也只会写入buffer, 不会flush刷到磁盘; 所以我认为 第二句话(放到log_by_lua阶段就没问题了)不太对,还望帮忙解答这个疑问
文档里面这里说的:
虽然小于flush_limit的内容不会flush,但是会放到 模块变量log_buffer_data这个数组中
我的两个疑问: