Nginx 로그 설정 및 분할

log_format: 포맷 로그
log_형식 문법
log_format    formatName    formatParams

log_형식 문법 설명
log_format                      
formatName                   ,       
formatParams                ,       

log_format 매개 변수 목록
$msec                         

$remote_addr               IP
$remote_user                  
$http_user_agent                
$http_x_forwarded_for      IP(    )

$time_local                 
$time_iso8601           ISO8601    
$request_time               

$connection                   
$connection_requests          

$request                   URL HTTP  
$request_body               
$request_length              
$status                       
$http_referer                 

$body_bytes_sent              (      )
$bytes_sent                    

access_로그: 출력 로그
access_로그 문법
access_log    logPath    [formatName]

access_로그 문법 설명
access_log                          
logPath                      
formatName                  

절단 로그
1. 스 크 립 트 로 자 르 기
스 크 립 트 편집
tianshl@tianshl nginx $ vim nginx_log_division.sh

스 크 립 트 내용
#! /bin/sh

#     
yesterday=`date -v -1d +%Y%m%d`

#     
log_path="/usr/local/var/log/nginx/"

# SDK    
sdk_path=${log_path}sdk

#          
mv -f ${sdk_path}.log ${sdk_path}_${yesterday}.log

#         
pid_path="/usr/local/var/run/nginx.pid"
sudo kill -USR1 `cat ${pid_path}`

정시 임무
루트 로 전환
tianshl@tianshl nginx $ sudo su root

crontab 편집
sh-3.2# crontab -e

crontab 한 줄 추가
0 0 * * * sh /usr/local/var/log/nginx/nginx_log_division.sh

추가 성공 여부 보기
sh-3.2# crontab -l

2. 스 크 립 트 로 자 르 지 않 기
server 세그먼트 다음 코드 추가
if ($time_iso8601 ~ "(\d{4})-(\d{2})-(\d{2})") {
    set $time $1$2$3;
}

로그 파일 경로 에 날짜 인자 추가
access_log /var/log/nginx/api-$time.log;

밤 을 들다
events {
    worker_connections 1024;
}

http {
    server {
        #   88  
        listen 88;

        if ($time_iso8601 ~ "(\d{4})-(\d{2})-(\d{2})") {
            set $time $1$2$3;
        }

        location /sdk {
            #   sdk    
            access_log /usr/local/var/log/nginx/sdk-$time.log;
            proxy_pass http://localhost:8888;
        }
    }
}

1.   /sdk             ,           ,          。
2.       、 、 、  、  、      。

밤 을 들다
nginx. conf 와 같은 프로필 편집
tianshl@tianshl ~ $ vim /usr/local/etc/nginx/nginx.conf

구성 내용
events {
    worker_connections 1024;
}

http {

    #   sdk    
    log_format sdk_log '$remote_addr - $status';

    #   api    
    log_format api_log $request_body;

    server {
        #   88  
        listen 88;

        location /sdk {
            #   sdk  
            access_log /usr/local/var/log/nginx/sdk.log sdk_log;
            proxy_pass http://localhost:8888;
        }

        location /api {
            #   api  
            access_log /usr/local/var/log/nginx/api.log api_log;
            proxy_pass http://localhost:8888;
        }
    }
}

다시 시작 nginx
tianshl@tianshl ~ $ sudo nginx

nginx 시작 성공 후 4 개의 로그 파일 자동 생 성
tianshl@tianshl ~ $ cd /usr/local/var/log/nginx
tianshl@tianshl nginx $ ls
access.log    api.log    error.log    sdk.log

로그 보기
tianshl@tianshl nginx $ tail -f *.log

==> access.log <==

==> api.log <==

==> error.log <==

==> sdk.log <==

sdk 요청 및 로그 보기
==> sdk.log <==
127.0.0.1 - 502

테스트 결과
    

좋은 웹페이지 즐겨찾기