Log#

Los registros de acceso se escriben en el formato especificado.

Los registros se escriben en el contexto de una location donde finaliza el procesamiento. Esto puede ser una location diferente de la original si ocurre una redirección interna durante el procesamiento de la solicitud.

Ejemplo de configuración#

log_format compression '$remote_addr - $remote_user [$time_local] '
                       '"$request" $status $bytes_sent '
                       '"$http_referer" "$http_user_agent" "$gzip_ratio"';

access_log /spool/logs/angie-access.log compression buffer=32k;

Directivas#

access_log#

Sintaxis

access_log path [format [buffer=size] [gzip=level]] [flush=time] [if=condition]];

access_log off;

Predeterminado

access_log logs/access.log combined; (la ruta depende del parámetro de compilación build parameter --http-log-path)

Contexto

http, server, location, if in location, limit_except

Establece la ruta, el formato y la configuración de escritura en búfer para el registro. Se pueden usar múltiples registros en el mismo nivel de configuración. El registro en syslog se configura especificando el prefijo "syslog:" en el primer parámetro. El valor especial off cancela todas las directivas access_log para el nivel actual. Si no se especifica un formato, se utiliza el formato predefinido "combined".

Si se especifica el tamaño del búfer usando el parámetro buffer o se especifica el parámetro gzip, la escritura se realizará en búfer.

Advertencia

El tamaño del búfer no debe exceder el tamaño de una escritura atómica en un archivo de disco. En FreeBSD este tamaño es ilimitado.

Cuando el almacenamiento en búfer está habilitado, los datos se escriben en el archivo:

  • si la siguiente línea de registro no cabe en el búfer;

  • si los datos en el búfer han estado allí más tiempo que el intervalo especificado por el parámetro flush;

  • al reabrir el archivo de registro o al terminar el proceso de trabajo.

Si se especifica el parámetro gzip, el búfer se comprimirá antes de escribirse en el archivo. El nivel de compresión se puede establecer en el rango de 1 (más rápido, pero peor compresión) a 9 (más lento, pero mejor compresión). Por defecto, se utiliza un tamaño de búfer de 64K bytes y un nivel de compresión 1. Los datos se comprimen en bloques atómicos, y en cualquier momento el archivo de registro puede ser descomprimido o leído usando la utilidad zcat.

Ejemplo:

access_log /path/to/log.gz combined gzip flush=5m;

Nota

Para la compatibilidad con la compresión gzip de registros, Angie debe ser compilado con la biblioteca zlib.

Se pueden usar variables en la ruta del archivo, pero estos registros tienen algunas limitaciones:

  • el usuario bajo cuyas credenciales se ejecutan los procesos de trabajo debe tener permisos para crear archivos en el directorio con dichos registros;

  • el almacenamiento en búfer no funciona;

  • el archivo se abre para cada escritura de registro y se cierra inmediatamente después de escribir. Sin embargo, dado que los descriptores de archivos de uso frecuente pueden almacenarse en caché, durante la rotación de registros dentro del tiempo especificado por el parámetro valid de la directiva open_log_file_cache, la escritura puede continuar en el archivo antiguo.

  • para cada escritura de registro, se verifica la existencia del directorio raíz para la solicitud — si este directorio no existe, el registro no se crea. Por lo tanto, root y access_log deben describirse en el mismo nivel de configuración:

server {
    root       /spool/vhost/data/$host;
    access_log /spool/vhost/logs/$host;
    ...

El parámetro if habilita el registro condicional. Una solicitud no se registrará si el resultado de la evaluación de la condición es "0" o una cadena vacía. En el siguiente ejemplo, las solicitudes con códigos de respuesta 2xx y 3xx no se registrarán:

map $status $loggable {
    ~^[23]  0;
    default 1;
}

access_log /path/to/access.log combined if=$loggable;

log_format#

Sintaxis

log_format name [escape =:samp:default | json | none ] string ...;

Predeterminado

log_format combined "...";

Contexto

http

Especifica el formato del registro.

El parámetro escape permite configurar el escape de caracteres a json o default en variables; por defecto se usa default. El valor none desactiva el escape de caracteres.

Cuando se usa default, los caracteres """, "\", y los caracteres con valores menores que 32 o mayores que 126 se escapan como "\xXX". Si no se encuentra el valor de la variable, se escribirá un guion "-" en el registro como valor.

Cuando se usa json, todos los caracteres no permitidos en cadenas JSON son escapados: los caracteres """ y "\" se escapan como "\"" y "\\", los caracteres con valores menores que 32 se escapan como "\n", "\r", "\t", "\b", "\f", o "\u00XX".

Las líneas de cabecera enviadas al cliente comienzan con el prefijo sent_http_, por ejemplo, $sent_http_content_range.

El formato predefinido combined siempre existe en la configuración:

log_format combined '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';

open_log_file_cache#

Sintaxis

open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];

open_log_file_cache off;

Predeterminado

open_log_file_cache off;

Contexto

http, server, location

Define una caché que almacena descriptores de archivo de registros utilizados con frecuencia cuyos nombres se especifican mediante variables. Parámetros:

max

Establece el número máximo de descriptores en la caché; cuando la caché se desborda, los descriptores menos utilizados recientemente (LRU) se cierran.

inactive

Establece el tiempo después del cual un descriptor en caché se cierra si no ha sido accedido durante este tiempo. El valor predeterminado es 10 segundos.

min_uses

Establece el número mínimo de usos del archivo durante el tiempo especificado por el parámetro inactive, después del cual el descriptor de archivo permanecerá abierto en la caché. El valor predeterminado es 1.

valid

Especifica después de qué tiempo comprobar que el archivo todavía existe bajo el mismo nombre. El valor predeterminado es 60 segundos.

off

Desactiva el almacenamiento en caché.

Ejemplo de uso:

open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;