Skip to content

有个疑问关于日志记录的-logger #349

Description

@hy0604

文档里面这里说的:

  • 由于在 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

我的两个疑问:

  1. 既然模块变量会缓存,那么下次就会把之前累加的内容一起给发送了,为什么你这里写的不会累加?
  2. 而且就算放到log_by_lua阶段,小于flush_limit的内容,也只会写入buffer, 不会flush刷到磁盘; 所以我认为 第二句话(放到log_by_lua阶段就没问题了)不太对,还望帮忙解答这个疑问

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions