ngx_stream_log_module

ngx_stream_log_module 모듈(1.11.4)은 지정된 형식으로 세션 로그를 작성합니다.

예제 구성

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

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

Directives

Syntax:  access_log path format [buffer=size] [gzip[=level]] [flush=time] [if=condition];
         access_log off;
Default: access_log off;
Context: stream, server

버퍼가 있는 로그 쓰기에 대한 경로, 형식, 구성을 설정합니다. 동일한 구성 수준에서 여러 로그를 지정할 수 있습니다. syslog에 로깅하려면 첫 매개변수에 “syslog:” 접두사를 지정하여 구성할 수 있습니다. 특수 값 off는 현재 수준에서 모든 access_log 명령을 취소합니다.

buffer 또는 gzip 매개변수를 사용할 경우 로그에 대한 쓰기에 버퍼가 들어갑니다.

버퍼 용량은 디스크 파일에 대한 원자성 쓰기의 용량을 초과할 수 없습니다. FreeBSD의 경우, 이 용량에 제한이 없습니다.

버퍼링이 활성화되어 데이터가 파일에 작성되는 경우:

  • 다음 로그 행이 버퍼에 맞지 않을 경우
  • 버퍼가 들어간 데이터가 flush 매개변수에서 지정한 것보다 오래된 경우
  • 작업자 프로세스가 로그 파일을 다시 열거나 닫는 경우.

gzip 매개변수를 사용할 경우, 버퍼가 들어간 데이터를 압축한 다음 파일에 작성합니다. 압축 수준은 1(최대 속도, 적게 압축)~9(최저 속도, 최대 압축) 사이로 설정할 수 있습니다. 기본적으로 버퍼 용량은 64K 바이트와 같고, 압축 수준은 1로 설정됩니다. 데이터가 원자성 블록에 압축되므로 로그 파일은 언제든 압축을 해제하거나 “zcat”으로 읽을 수 있습니다.

예:

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

gzip 압축이 작동하려면 zlib 라이브러리로 nginx를 구축해야 합니다.

파일 경로에는 변수가 포함될 수 있지만 이러한 로그에는 제약이 있습니다.

  • 작업자 프로세스가 자격 증명을 사용하는 사용자는 해당 로그가 있는 디렉터리에 파일을 생성할 권한이 있어야 합니다.
  • 버퍼가 들어간 쓰기는 작동하지 않습니다.
  • 로그를 쓸 때마다 파일을 열었다 닫습니다. 그러나 자주 사용하는 파일의 설명은 캐시에 저장되고, open_log_file_cache 명령의 valid 매개변수에서 지정한 시간 동안 이전 파일에 쓰기를 계속할 수 있습니다.

if 매개변수는 조건적 로깅을 지원합니다. condition이 “0” 또는 빈 문자열일 경우 세션이 로깅되지 않습니다.

Syntax:  log_format name [escape=default|json|none] string ...;
Default: —
Context: stream

로그 형식을 지정합니다. 예를 들어, 다음과 같은 형식입니다.

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"';

escape 매개변수(1.11.8)를 사용하면 변수에서 json 또는 default 문자 이스케이프를 설정할 수 있습니다. 기본적으로 default 이스케이프를 사용합니다. none 매개변수(1.13.10)는 이스케이프를 비활성화합니다.

default 이스케이프의 경우, “””, “\” 문자와 값이 32 미만이거나 126을 초과하는 다른 문자의 경우 “\xXX”로 이스케이프됩니다. 변수 값을 찾을 수 없는 경우 하이픈(“-“)이 로깅됩니다.

json 이스케이프의 경우, JSON 문자열에서 허용하지 않는 모든 문자가 이스케이프됩니다. “””와 “\” 문자는 “\”” 및 “\\”로 이스케이프되고, 값이 32 미만인 문자는 “\n”, “\r”, “\t”, “\b”, “\f” 또는 “\u00XX”로 이스케이프됩니다.

Syntax:  open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
         open_log_file_cache off;
Default: open_log_file_cache off;
Context: stream, server

이름에 변수가 포함된 자주 사용하는 로그의 파일 설명을 저장할 캐시를 정의합니다. 이 명령은 다음과 같은 매개변수가 있습니다.

max

캐시에서 최대 기술어의 개수를 설정합니다. 캐시가 가득 차면 가장 오래 전에 사용한(LRU) 기술어를 닫습니다.

inactive

일정 시간 액세스가 없을 경우 캐싱된 기술어를 닫는 시점을 설정합니다. 기본적으로 10초가 설정됩니다.

min_uses

inactive 매개변수에서 설정된 시간에 캐시에서 기술어를 열어두는 동안 최소 파일 사용 개수를 설정합니다. 기본값은 1입니다.

valid

여전히 동일한 이름으로 파일이 존재하는지 확인해야 하는 시간 간격을 설정합니다. 기본적으로 60초를 설정합니다.

off

캐싱 비활성화

사용 예제:

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