Lua 记录库和打开文件限制
Lua Logging libraries and open file limits
我正在使用 lua-log 进行一些日志记录。它本身是一段很好的代码,但在我的原因中,我必须通过 nginx 调用 lua 脚本。我的代码我正在使用
创建日志界面
local log = require 'log'.new(
'trace',
require 'log.writer.list'.new( -- multi writers:
require 'log.writer.file.roll'.new( -- * roll files
LOG_FILE_PATH,
LOG_FILE_NAME,
5, -- count files
4096*4096*4096 -- max file size in bytes
)
), require 'log.formatter.concat'.new()
)
以及稍后在需要时调用日志功能来记录任何内容。我开始面临的问题是因为我调用了很多脚本实例,我达到了打开文件的限制。现在,我已经通过添加这个条目来调整 nginx worker_rlimit_nofile 30000;
但我不确定这是否是最终的解决方案。
我想做的是只在需要时写入日志文件,但不应在脚本开始时创建该文件。我该怎么做,或者是否有任何其他适合 lua 的良好日志记录?目前我登录到文件,但最终我会使用日志到系统日志或 sql.
您可以直接使用log.file.writer
并设置close_file=true
选项。 (检查 file.roll 实施)。
但是在 threads/processes 之间没有同步来访问日志文件。当写入操作执行时,日志文件的大小也会显示为 size=size+#data
,您可以获得比预期更大的文件大小。
为了使用多线程应用程序,我使用 ZeroMQ 编写器。
您可以 运行 作者将文件单独 process/thread 并使用 inproc/ipc 发送消息。您也可以使用 UDP 协议代替 ZeroMQ。
我正在使用 lua-log 进行一些日志记录。它本身是一段很好的代码,但在我的原因中,我必须通过 nginx 调用 lua 脚本。我的代码我正在使用
创建日志界面local log = require 'log'.new(
'trace',
require 'log.writer.list'.new( -- multi writers:
require 'log.writer.file.roll'.new( -- * roll files
LOG_FILE_PATH,
LOG_FILE_NAME,
5, -- count files
4096*4096*4096 -- max file size in bytes
)
), require 'log.formatter.concat'.new()
)
以及稍后在需要时调用日志功能来记录任何内容。我开始面临的问题是因为我调用了很多脚本实例,我达到了打开文件的限制。现在,我已经通过添加这个条目来调整 nginx worker_rlimit_nofile 30000;
但我不确定这是否是最终的解决方案。
我想做的是只在需要时写入日志文件,但不应在脚本开始时创建该文件。我该怎么做,或者是否有任何其他适合 lua 的良好日志记录?目前我登录到文件,但最终我会使用日志到系统日志或 sql.
您可以直接使用log.file.writer
并设置close_file=true
选项。 (检查 file.roll 实施)。
但是在 threads/processes 之间没有同步来访问日志文件。当写入操作执行时,日志文件的大小也会显示为 size=size+#data
,您可以获得比预期更大的文件大小。
为了使用多线程应用程序,我使用 ZeroMQ 编写器。 您可以 运行 作者将文件单独 process/thread 并使用 inproc/ipc 发送消息。您也可以使用 UDP 协议代替 ZeroMQ。