Com o log_format
é possível incluir um intervalo de variáveis, como $ http_user_agent:
Mas é possível incluir uma variável do PHP-FPM?
Por exemplo, gostaria de incluir o ID do usuário conectado no access_log
.
Uma possibilidade é definir um cabeçalho em PHP e usar $ sent_http_XXX:
log_format inc_info '... [$sent_http_x_user_id] ...';
access_log /var/log/nginx/access.log inc_info;
<?php
header('X-User-ID: ' . head(USER_ID));
?>
Mas isso é um pouco hacky (enquanto envia valores para o navegador), e não funciona se você estiver usando register_shutdown_function()
no PHP (por exemplo, se você mostrasse o tempo de processamento do DB), pois os cabeçalhos já foram enviado.
Isso pode ser feito no Apache via:
LogFormat "... [%{USER_ID}n] ..." inc_info
CustomLog /var/log/httpd/access_log inc_info
Com o PHP correspondente:
if (function_exists('apache_note')) {
apache_note('USER_ID', USER_ID);
}