File: //var/log/nginx/last7
#!/bin/bash
############################
# CONFIG
############################
NGINX_LOG_DIR="/var/log/nginx"
OUTPUT_DIR="/home/ubuntu"
DAYS=7
############################
# INPUT CHECK
############################
DOMAIN="$1"
if [[ -z "$DOMAIN" ]]; then
echo "Usage: $0 <domain_name>"
echo "Example: $0 mentoring"
exit 1
fi
############################
# OUTPUT FILE
############################
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M")
OUTPUT_FILE="$OUTPUT_DIR/${DOMAIN}_nginx_logs_last_${DAYS}_days_${TIMESTAMP}.log"
############################
# DATE RANGE
############################
START_DATE=$(date -d "$DAYS days ago" +"%d/%b/%Y")
END_DATE=$(date +"%d/%b/%Y")
ACCESS_LOG="$NGINX_LOG_DIR/${DOMAIN}.access.log"
ERROR_LOG="$NGINX_LOG_DIR/${DOMAIN}.error.log"
############################
# START REPORT
############################
{
echo "NGINX LOG REPORT"
echo "Domain : $DOMAIN"
echo "Period : Last $DAYS days ($START_DATE to $END_DATE)"
echo "Generated on : $(date)"
echo "=========================================="
############################
# ACCESS LOG
############################
echo ""
echo "Access Log (last $DAYS days)"
echo "------------------------------------------"
if [[ -f "$ACCESS_LOG" ]]; then
awk -v start="$START_DATE" '$4 ~ start {print}' "$ACCESS_LOG" | tail -n 100
else
echo "Access Log NOT FOUND : $ACCESS_LOG"
fi
############################
# ERROR LOG
############################
echo ""
echo "Error Log (last $DAYS days)"
echo "------------------------------------------"
if [[ -f "$ERROR_LOG" ]]; then
grep "$(date +"%Y/%m")" "$ERROR_LOG" | tail -n 100
else
echo "Error Log NOT FOUND : $ERROR_LOG"
fi
echo ""
echo "END OF REPORT"
} | tee "$OUTPUT_FILE"
############################
# FINAL MESSAGE
############################
echo ""
echo "Output saved to:"
echo "$OUTPUT_FILE"