我正在使用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()
)
以后需要时调用日志函数来记录任何内容。我开始面对的问题,因为我调用了很多脚本实例,我达到了打开文件限制。目前,我通过添加此条目worker_rlimit_nofile 30000;
来调整nginx,但我不确定这是否是最终解决方案。
我想要做的是只在需要时写入日志文件,但不应在脚本开头创建该文件。我怎么能这样做或者是否有任何其他良好的日志记录可用于lua?目前我登录到文件,但最终我将使用log to syslog或sql。
答案 0 :(得分:1)
您可以直接使用log.file.writer
并设置close_file=true
选项。 (结帐file.roll实施)。
但是线程/进程之间没有同步来访问日志文件。当写入操作执行为size=size+#data
时,日志文件的大小也会计入到卷展栏计数,并且您可以获得比预期更大的文件大小。
要使用多线程应用程序,我使用ZeroMQ编写器。 您可以在单独的进程/线程中运行writer to file,并使用inproc / ipc发送消息。您也可以使用UDP协议而不是ZeroMQ。