https://www.digitalocean.com/community/tutorials/nginx-access-logs-error-logs
# Syntax: error_log file [level];
Default: error_log logs/error.log error;
Context: main, http, mail, stream, server, location
http {
...
error_log /dev/stderr
}
# access_log log_file log_format
http {
...
log_format custom '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$gzip_ratio"';
access_log /dev/stdout custom;
}
변수 관련 정보
http://nginx.org/en/docs/varindex.html
사용자가 꽤 있는 서비스의 경우 nginx log 가 금방 커져 용량을 차지하게 된다.
이 경우 logrotate
을 통해서 로그 파일을 관리하는 것이 디스크 측면에서 좋다.
logrotate 설정을 위해 /etc/logrotate.d/nginx
에 하단과 같이 작성한다.
/var/log/nginx/*.log {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 640 nginx adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}
위에 기입된 옵션은 다음과 같다.
이후에 아래 명령어를 통해서 logrotate 를 적용한다.
logrotate -d -f /etc/logrotate.d/nginx
[logrotate] https://www.lesstif.com/system-admin/nginx-log-rotate-logrotate-75956229.html
rsyslog
를 통해서 database server 에 accesss log 를 전달 할 수 있다.
[nginx log to db] https://smythdesign.com/blog/logging-nginx-to-database/
[nginx log to pg] https://blog.supersetinc.com/2018/04/09/high-performance-logging-nginx-postgres-using-rsyslog/