sqlitelog_format
Определяет формат записи для хранения журналов доступа в базе данных SQLite.
Описание
sqlitelog_format директива задаёт пользовательский формат для записи HTTP-запросов доступа в указанную базу данных SQLite. Формат может включать различные переменные, соответствующие деталям HTTP-запроса, таким как IP-адрес клиента, запрошенный URI и код состояния, возвращённый сервером. Эта директива особенно полезна для структурирования логов таким образом, чтобы последующие запросы к базе данных SQLite были простыми и эффективными.
В использовании директива sqlitelog_format принимает два и более параметров. Первый параметр — имя формата, которое используется для идентификации этого формата во всей вашей конфигурации NGINX. Последующие параметры состоят из набора переменных, определяющих, какая информация должна записываться в лог. Эти переменные могут включать элементы, такие как $remote_addr для IP-адреса клиента, $time_local для отметки времени, и любые другие доступные переменные логов NGINX, что позволяет организовать подробное логирование, адаптированное под потребности пользователя. После определения этот формат может быть указан директивой sqlitelog при указании того, как журналы доступа должны сохраняться в базе данных SQLite.
Важно отметить, что если определённый формат слишком сложен или записи логов становятся чрезмерно объёмными, это может негативно сказаться на производительности, особенно в условиях высокой нагрузки. Кроме того, выбранный формат влияет на то, как данные будут храниться в базе данных SQLite, поэтому рекомендуется тщательно планировать структуру формата с учётом потребностей запросов и ожидаемых сценариев анализа логов.
Пример конфига
http {
sqlitelog_format myformat "$remote_addr $time_local $request_uri $status $bytes_sent";
sqlitelog /tmp/access.db myformat buffer=128K max=5;
}Если формат не указан, журналы не будут записываться корректно, что может привести к потере данных.
Неправильная конфигурация или неопределённые переменные в строке формата могут привести к ошибкам или пустым записям в журнале.
Убедитесь, что база данных SQLite доступна для записи процессом NGINX, чтобы избежать проблем с логированием.