sqlitelog
sqlitelog 指令将 NGINX 配置为将请求记录到 SQLite 数据库。
SQLite logger module for NGINX
·
httpserver
语法sqlitelog path format [buffer=buffer_size] [max=max_entries] [if=condition];
默认值none
上下文http, server
参数1+
说明
sqlitelog 指令启用将 HTTP 请求详细信息记录到 SQLite 数据库,从而实现对访问日志的高效存储和查询。该指令接受一个或多个参数,包括 SQLite 数据库文件的路径以及先前由 sqlitelog_format 指令定义的日志格式。此外,它提供用于配置日志缓冲区大小和其他影响数据处理及数据库交互的参数的选项。
当在 http 或 server 上下文中使用时,sqlitelog 指令通过将格式化的日志条目写入指定的 SQLite 数据库来工作。数据库架构根据提供的格式定义,捕获诸如远程地址、请求时间和状态码等关键信息。在处理请求时,如果启用了 sqlitelog_async 指令,这些数据点会被异步记录,从而有助于减轻对 NGINX 工作进程的性能影响。
该指令还通过可选的过滤器支持条件日志记录。用户可以定义何时记录日志的条件,从而对保存的数据进行更细粒度的控制。这在只需监控特定类型流量的场景中特别有用,可实现高效的日志清理和维护。
配置示例
http {
sqlitelog_format myformat $remote_addr $time_local $host $request_uri $request_time $status;
sqlitelog /tmp/access.db myformat buffer=128K max=5;
}⚠
确保 SQLite 数据库文件对 NGINX 用户具有适当的写权限,否则日志记录将失败。
⚠
过大的日志缓冲区会延迟日志写入,在流量高峰且服务器崩溃时可能导致数据丢失。
⚠
如果使用 async 模式,请注意故障排查可能会更复杂,因为日志可能不会在请求处理时立即写入。