Por fin luego de tanto batallar ya encontramos la solución de este apuro que muchos lectores de este sitio web han presentado. Si tienes alguna información que compartir puedes aportar tu comentario.
- Configuración de ejemplo
- Directivas
- access_log
- log_format
- open_log_file_cache
los ngx_http_log_module
El módulo escribe registros de solicitudes en el formato especificado.
Las solicitudes se registran en el contexto de una ubicación donde finaliza el procesamiento. Puede ser diferente de la ubicación original, si un redireccionamiento interno ocurre durante el procesamiento de la solicitud.
Configuración de ejemplo
log_format compression '$remote_addr - $remote_user [$time_local] ''"$request" $status$bytes_sent ''"$http_referer" "$http_user_agent" "$gzip_ratio"';access_log /spool/logs/nginx-access.log compression buffer=32k;
Directivas
Sintaxis: | access_logpath access_log off; |
---|---|
Defecto: | access_log logs/access.log combined; |
Contexto: | http , server , location , if in location , limit_except |
Establece la ruta, el formato y la configuración para una escritura de registro almacenada en búfer. Se pueden especificar varios registros en el mismo nivel de configuración. El registro en syslog se puede configurar especificando el “syslog:
” prefix en el primer parámetro. El valor especial off
cancela todo access_log
Directivas en el nivel actual. Si no se especifica el formato, el “combined
Se utiliza el formato ”.
Si el buffer
o gzip
(1.3.10, 1.2.7) se utiliza el parámetro, las escrituras en el registro se almacenarán en búfer.
El tamaño del búfer no debe exceder el tamaño de una escritura atómica en un archivo de disco. Para FreeBSD, este tamaño es ilimitado.
Cuando el almacenamiento en búfer está habilitado, los datos se escribirán en el archivo:
- si la siguiente línea de registro no cabe en el búfer;
- si los datos almacenados en búfer son más antiguos que los especificados por el
flush
parámetro (1.3.10, 1.2.7); - cuando un proceso de trabajo vuelve a abrir archivos de registro o se cierra.
Si el gzip
se utiliza el parámetro, los datos almacenados en búfer se comprimirán antes de escribir en el archivo. El nivel de compresión se puede establecer entre 1 (más rápido, menos compresión) y 9 (más lento, mejor compresión). De forma predeterminada, el tamaño del búfer es igual a 64 K bytes y el nivel de compresión se establece en 1. Dado que los datos se comprimen en bloques atómicos, el archivo de registro se puede descomprimir o leer mediante “zcat
” en cualquier momento.
Ejemplo:
access_log /path/to/log.gz combined gzip flush=5m;
Para que funcione la compresión gzip, nginx debe construirse con la biblioteca zlib.
La ruta del archivo puede contener variables (0.7.6+), pero tales registros tienen algunas restricciones:
- el usuario cuyas credenciales son utilizadas por los procesos de trabajo debe tener permisos para crear archivos en un directorio con dichos registros;
- las escrituras almacenadas en búfer no funcionan;
- el archivo se abre y se cierra para cada escritura de registro. Sin embargo, dado que los descriptores de los archivos de uso frecuente se pueden almacenar en una caché, la escritura en el archivo antiguo puede continuar durante el tiempo especificado por la directiva open_log_file_cache
valid
parámetro - durante cada registro escriba la existencia de la solicitud directorio raíz está marcado, y si no existe, no se crea el registro. Por tanto, es una buena idea especificar tanto raíz y
access_log
en el mismo nivel de configuración:server{root /spool/vhost/data/$host;access_log /spool/vhost/logs/$host; ...
los if
El parámetro (1.7.0) habilita el registro condicional. No se registrará una solicitud si el condition
evalúa a “0” o un vacío string. En el siguiente ejemplo, las solicitudes con códigos de respuesta 2xx y 3xx no se registrarán:
map$status$loggable ~^[23] 0;default1;access_log /path/to/access.log combined if=$loggable;
Sintaxis: | log_formatname |
---|---|
Defecto: | log_format combined "..."; |
Contexto: | http |
Especifica el formato de registro.
los escape
El parámetro (1.11.8) permite configurar json
o default
caracteres que se escapan en variables, por defecto, default
se utiliza escapar. los none
El valor (1.13.10) desactiva el escape.
Para default
escapar, personajes “"
“,”“, Y otros caracteres con valores inferiores a 32 (0,7.0) o superiores a 126 (1.1.6) se escapan como”
xXX
”. Si no se encuentra el valor de la variable, un guión (“-
”) Se registrará.
Para json
escapar, todos los caracteres no están permitidos en JSON instrumentos de cuerda se escapará: caracteres “"
” y ““Se escapan como”
"
” y “\
“, Los caracteres con valores inferiores a 32 se escapan como”n
“,”r
“,”t
“,”b
“,”f
“, o “u00XX
”.
El formato de registro puede contener variables comunes y variables que existen solo en el momento de escribir un registro:
$bytes_sent
- la cantidad de bytes enviados a un cliente
$connection
- número de serie de conexión
$connection_requests
- el número actual de solicitudes realizadas a través de una conexión (1.1.18)
$msec
- tiempo en segundos con una resolución de milisegundos en el momento de la escritura del registro
$pipe
- “
p
“Si la solicitud se canalizó”,.
” de lo contrario $request_length
- longitud de la solicitud (incluida la línea de solicitud, el encabezado y el cuerpo de la solicitud)
$request_time
- solicitar tiempo de procesamiento en segundos con una resolución de milisegundos; tiempo transcurrido entre los primeros bytes que se leyeron del cliente y la escritura del registro después de que se enviaron los últimos bytes al cliente
$status
- estado de respuesta
$time_iso8601
- hora local en el formato estándar ISO 8601
$time_local
- hora local en el formato de registro común
En las variables de las versiones modernas de nginx $ estado (1.3.2, 1.2.2), $ bytes_sent (1.3.8, 1.2.5), $ conexión (1.3.8, 1.2.5), $ connection_requests (1.3.8, 1.2.5), $ mseg (1.3.9, 1.2.6), $ request_time (1.3.9, 1.2.6), $ pipe (1.3.12, 1.2.7), $ request_length (1.3.12, 1.2.7), $ time_iso8601 (1.3.12, 1.2.7) y $ time_local (1.3.12, 1.2.7) también están disponibles como variables comunes.
Las líneas de encabezado enviadas a un cliente tienen la prefix “sent_http_
“, por ejemplo, $sent_http_content_range
.
La configuración siempre incluye el predefinido “combined
” formato:
log_format combined '$remote_addr - $remote_user [$time_local] ''"$request" $status$body_bytes_sent ''"$http_referer" "$http_user_agent"';
Sintaxis: | open_log_file_cache open_log_file_cache off; |
---|---|
Defecto: | open_log_file_cache off; |
Contexto: | http , server , location |
Define una caché que almacena los descriptores de archivo de los registros de uso frecuente cuyos nombres contienen variables. La directiva tiene los siguientes parámetros:
max
- establece el número máximo de descriptores en una caché; si la caché se llena, los descriptores de uso menos reciente (LRU) se cierran
inactive
- establece el tiempo después del cual se cierra el descriptor en caché si no hubo acceso durante este tiempo; por defecto, 10 segundos
min_uses
- establece el número mínimo de usos de archivos durante el tiempo definido por el
inactive
parámetro para permitir que el descriptor permanezca abierto en una caché; por defecto, 1 valid
- establece el tiempo después del cual se debe verificar que el archivo todavía existe con el mismo nombre; por defecto, 60 segundos
off
- deshabilita el almacenamiento en caché
Ejemplo de uso:
open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;
Recuerda algo, que puedes permitirte valorar esta división si te fue preciso.