1.声明日志格式

    声明log    log位置                log格式;

    access_log logs/access.log main; 

 

2.定义日志格式(以下为常用的日志格式 可各自按需调整格式):

  log_format main  '$remote_addr - $remote_user [$time_local] "$request" '

          '$status $body_bytes_sent "$http_referer" '

          ' "$http_user_agent" "$http_x_forwarded_for" ';

   

  Nginx日志的作用域可以为http server location 日志级别location>server>http

 

3.Nginx日志按天切割 ,

   在nginx内创建logs文件

   创建 mkdir logs

 

   切换 cd logs

   创建 mkdir data

   切换 cd data 

 

   在data中编写Shell脚本splitLog.sh(记住为splitLog.sh添加可执行权限)

  # /bin/bash

  # 日志保存位置

  base_path='/opt/nginx/logs'

  # 获取当前年信息和月信息

  log_path=$(date -d yesterday +"%Y%m")

  # 获取昨天的日信息

  day=$(date -d yesterday +"%d")

  # 按年月创建文件夹

  mkdir -p $base_path/$log_path

  # 备份昨天的日志到当月的文件夹

  mv $base_path/access.log $base_path/$log_path/access_$day.log

  # 输出备份日志文件名

  # echo $base_path/$log_path/access_$day.log

  # 通过Nginx信号量控制重读日志

  kill -USR1 `cat /opt/nginx/logs/nginx.pid`

 

4.添加Linux定时任务

  crontab -e

 

  # 每天0时1分进行日志分割(建议在02-04点之间,系统负载小)

  01 00 * * * /opt/nginx/logs/splitLog.sh

 

  重启Linux定时任务

  crond restart

 

  如果提示以下错误 crond: can't lock /var/run/crond.pid, otherpid may be 4141:资源暂时不可用

  删除/var/run/crond.pid 重新执行命令即可