Log#

O módulo escreve logs de requisição no formato especificado.

Exemplo de Configuração#

log_format basic '$remote_addr [$time_local] '
                 '$protocol $status $bytes_sent $bytes_received '
                 '$session_time';

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

Diretivas#

access_log#

Sintaxe

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

access_log off;

Padrão

access_log off;

Contexto

stream, server

Define o path, format e configuração para uma escrita de log com buffer. Vários logs podem ser especificados no mesmo nível de configuração. O log para syslog pode ser configurado especificando o prefixo "syslog:" no primeiro parâmetro. O valor especial off cancela todas as diretivas access_log no nível atual.

Se o parâmetro buffer ou gzip for usado, as escritas no log serão armazenadas em buffer.

Aviso

O tamanho do buffer não deve exceder o tamanho de uma escrita atômica em um arquivo de disco. Para FreeBSD este tamanho é ilimitado.

Quando o buffer está habilitado, os dados serão escritos no arquivo:

  • se a próxima linha de log não couber no buffer;

  • se os dados em buffer forem mais antigos que o intervalo de tempo especificado pelo parâmetro flush;

  • quando um processo worker estiver reabrindo arquivos de log ou sendo encerrado.

Se o parâmetro gzip for usado, então o buffer será comprimido antes de escrever no arquivo. O nível de compressão pode ser definido entre 1 (mais rápido, menos compressão) e 9 (mais lento, melhor compressão). Por padrão, um tamanho de buffer de 64K bytes e nível de compressão 1 são usados. Os dados são comprimidos em blocos atômicos, e a qualquer momento o arquivo de log pode ser descomprimido ou lido pelo utilitário "zcat".

Exemplo:

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

Nota

Para suporte à compressão gzip, o Angie deve ser compilado com a biblioteca zlib.

Variáveis podem ser usadas no caminho do arquivo, mas tais logs têm algumas restrições:

  • o usuário cujas credenciais são usadas pelos processos worker deve ter permissões para criar arquivos em um diretório com tais logs;

  • o buffer não funciona;

  • o arquivo é aberto para cada escrita de log e fechado imediatamente após a escrita. No entanto, como descritores de arquivos usados frequentemente podem ser armazenados em cache, a escrita pode continuar no arquivo antigo durante a rotação de log pelo tempo especificado pelo parâmetro valid da diretiva open_log_file_cache.

O parâmetro if habilita o log condicional. Uma sessão não será logada se a condição for avaliada como "0" ou uma string vazia.

log_format#

Sintaxe

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

Padrão

Contexto

stream

Especifica o formato do log, por exemplo:

log_format proxy '$remote_addr [$time_local] '
                 '$protocol $status $bytes_sent $bytes_received '
                 '$session_time "$upstream_addr" '
                 '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';

O parâmetro escape permite definir escape de caracteres json ou default em variáveis; por padrão, default é usado. O valor none desabilita o escape de caracteres.

Ao usar default, os caracteres """, "\", e caracteres com valores menores que 32 ou maiores que 126 são escapados como "\xXX". Se o valor da variável não for encontrado, um hífen "-" será logado.

Ao usar json, todos os caracteres não permitidos em strings JSON são escapados: caracteres """ e "\" são escapados como "\"" e "\\", caracteres com valores menores que 32 são escapados como "\n", "\r", "\t", "\b", "\f", ou "\u00XX".

open_log_file_cache#

Sintaxe

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

open_log_file_cache off;

Padrão

open_log_file_cache off;

Contexto

stream, server

Define um cache que armazena os descritores de arquivo de logs usados frequentemente cujos nomes contêm variáveis. A diretiva tem os seguintes parâmetros:

max

Define o número máximo de descritores no cache; quando o cache transborda, os descritores menos recentemente usados (LRU) são fechados.

inactive

Define o tempo após o qual um descritor em cache é fechado se não houve acessos durante este tempo; por padrão, 10 segundos.

min_uses

Define o número mínimo de usos do arquivo durante o tempo definido pelo parâmetro inactive para que o descritor permaneça aberto no cache; por padrão, 1.

valid

Define o tempo após o qual deve ser verificado se o arquivo ainda existe com o mesmo nome; por padrão, 60 segundos.

off

Desabilita o cache.

Exemplo de uso:

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