nginx access_log

nginx access_log 完全关闭

最近在配置本地nginx开发环境时,发现一个问题,当server段不指定access_log时,并且http段中也未指定任何 access_log参数时,它会默认写到logs/access.log这个文件,也就是access_log默认值就是”logs /access.log”,而且是所有server的访问日志。但nginx网站上我并未找到此配置的默认值。
如果我们不需要,在http段中加一行access_log off;然后在特定的server中配置自己想写入的日志。开发环境我默认不写日志,即不配置任何access_log,需要时才打开。
nginx的http段中,设置access log:
 

 

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
log_format  gzip  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $bytes_sent "$http_referer" '
                      '"$http_user_agent" "$gzip_ratio"';
 
log_format download  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $bytes_sent "$http_referer" "$http_user_agent" '
                      '"$http_range" "$sent_http_content_range"';
 
#access_log  logs/access.log  main;
access_log off;



nginx关闭日志功能access_log关闭

正确关闭方式:

  • access_log off;
  • error_log /dev/null;
access.log 按日期分割日志:

 listen 80;
    server_name _;
    if ($time_iso8601 ~ '(\d{4}-\d{2}-\d{2})') {
        set $day $1;
    }
    access_log /data/wwwlogs/sms_nginx_$day.log combined;

server
{
   ……
   #从系统时间中正则匹配出年月日
   if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
      set $date $1$2$3;
   }
   
   # 日期记录日志
   access_log  logs/$date.host.access.log;
}

 

if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})")
{
    set $year $1;
    set $month $2;
    set $day $3;
    set $hour $4;
    set $minutes $5;
    set $seconds $6;
}

 

日志shell 脚本切割:

# vi logcron.sh
log_dir="/data/logs/nginx"
date_dir=`date +%Y%m%d`
/bin/mkdir -p ${log_dir}/${date_dir} > /dev/null 2>&1
/bin/mv ${log_dir}/access.log ${log_dir}/${date_dir}/access.log
kill -USR1 `cat /opt/nginx/logs/nginx.pid`
定义一个cron,在每天晚上23:59:50执行这个脚本,后面的事情就交给awstats了。

Nginx Access Log日志统计分析常用命令

https://www.cnblogs.com/freespider/p/9761789.html

http://blog.itpub.net/21220384/viewspace-2139952/

 

日志监控:

Nginx日志分割,异常邮件预警

https://blog.csdn.net/zhu6201976/article/details/85809239

Linux  shell 脚本发送邮件:

#shell send email
from_name="test@test.org"
from="test@<span style="font-family: Arial, Helvetica, sans-serif;">test</span>.com"
to="nick@test.com"
cc_name="AAA"
cc="AAA@test.com"
email_title="test@test.org"
email_content="/home/file_log.log"
email_subject="[Testing]"
echo -e "To: \"${email_title}\" <${to}>\nCc: \"${cc_name}\" <${cc}>\nFrom: \"${from_name}\" <${from}>\nSubject: ${email_subject}\n\n`cat ${email_content}`" | /usr/sbin/sendmail -t

 

按日期:

一:

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

access_log logs/host.access_$day.log combined;

结果:host.access_2020-08-27.log

-------------------------------------------------------------------------

二:
if ($time_iso8601 ~ "(\d{4})-(\d{2})-(\d{2})") {
set $time $1$2$3;
}
access_log logs/host.access_$time .log combined;

结果:host.access_20200826.log

两种写法其实是一样的,第一种把日期做成一个参数,第二个是把日期做成三个参数(一个括号一个参数)

combined是按默认日志格式

还可以按指定日志格式:

log_format time_log_format '$remote_addr - $remote_user [$time_local] "$request" - $request_time - $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" - [$upstream_response_time]';

access_log logs/host.access_$time .log time_log_format;

 

按小时生成:

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

access_log  logs/host.access_$day.log  combined;

结果:host.access_2020-08-27T00.log

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值