nginx日志按天分割

原帖是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
nginx 日志分割是比较常见的运维工作,关于这方面的文章也很多,通常无外乎两种做法:
 
cron定期执行shell脚本对日志文件进行归档。
使用专门日志归档logrotate。
以上方式与nginx其实没有特别的关系。 从nginx 0.7.6 版本开始,access_log 的路径配置可以包含变量,我们以此进行日志分割。
 
同时我们基于nginx的 timeiso8601 内嵌变量来获取时间。time_iso8601格式如下:
 
2018-09-21T16:01:02+02:00
然后使用正则表达式来获取所需时间的数据。
 
http {
  log_format default_format '$remote_addr - $remote_user [$time_iso8601] "$request" '
      '$status $body_bytes_sent "$http_referer" '
      '"$http_user_agent" "$http_x_forwarded_for" "$request_body"';
       
       
      server {
          listen 443 ssl;
          ... ...
          if ($time_iso8601 ~ '(\d{4}-\d{2}-\d{2})') {
            set $tttt $1;
          }
           
          access_log /log/blog_access_$tttt.log;
      }
}
主要关注两个地方:
 
要在外方法的log_format上添加 $time_iso8601 ,将原来的time_local修改为time_iso8601。
在单个server中,通过正则表达式截取 $time_iso8601 生成时间戳。
最后插一个话题,你知道 $time_iso8601 为什么叫这个名字吗?
 
国际标准ISO 8601,是国际标准化组织的日期和时间的表示方法,全称为《数据存储和交换形式·信息交换·日期和时间的表示方法》。目前是2004年12月1日发行的第三版“ISO8601:2004”以替代1998年的第一版“ISO8601:1998”与2000年的第二版“ISO8601:2000”。

  照着上面的做法试了下,发现了两个问题

2024/05/29 05:38:09 [warn] 2773055#2773055: *24990740 using uninitialized "tttt" variable while logging request, client: 185.15.178.156, server: hjdang.com, request: "GET /coupon HTTP/1.1", host: "hjdang.com"
2024/05/29 05:38:12 [warn] 2773056#2773056: *24990759 using uninitialized "tttt" variable while logging request, client: 178.171.65.26, server: hjdang.com, request: "GET /d/1782431195418632474 HTTP/1.1", host: "hjdang.com"
2024/05/29 05:38:19 [warn] 2773053#2773053: *24990776 using uninitialized "tttt" variable while logging request, client: 178.171.67.37, server: hjdang.com, request: "GET /d/1782431195418632265 HTTP/1.1", host: "hjdang.com"

1. 出现了上面的警告,原因是nginx访问 access_log这个参数是在定义了$ttt之前的,正确的配置是把access_log配置在location下面:

复制代码
    location / {
        access_log  /data/log/nginx/www.hjdang_$tttt.log  main;
        proxy_pass   http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        send_timeout 600;
        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        proxy_buffer_size 128k;
        proxy_buffers 2 256k;
        proxy_busy_buffers_size 256k;
        proxy_temp_file_write_size 256k;
        client_max_body_size 10m;
        add_header Cache-Control "no-store,max-age=0";

    }
复制代码

 

2. error.log发现下面错误:

复制代码
2024/05/29 03:49:55 [error] 2732888#2732888: *24973771 testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request, client: 111.230.194.84, server: web.hjdang.com, request: "POST /goods/detail HTTP/1.1", upstream: "http://127.0.0.1:8238/goods/detail", host: "web.hjdang.com"
2024/05/29 03:50:00 [error] 2732888#2732888: *24973775 testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request, client: 122.96.46.53, server: web.hjdang.com, request: "POST /yunpan/resource/list HTTP/1.1", upstream: "http://127.0.0.1:8238/yunpan/resource/list", host: "web.hjdang.com", referrer: "https://www.hjdang.com/category/%E5%AD%A6%E4%B9%A0?q="
2024/05/29 03:50:00 [error] 2732888#2732888: *24973775 testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request, client: 122.96.46.53, server: web.hjdang.com, request: "POST /yunpan/top/article/list HTTP/1.1", upstream: "http://127.0.0.1:8238/yunpan/top/article/list", host: "web.hjdang.com", referrer: "https://www.hjdang.com/category/%E5%AD%A6%E4%B9%A0?q="
2024/05/29 03:50:01 [error] 2732888#2732888: *24973775 testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request, client: 122.96.46.53, server: web.hjdang.com, request: "POST /yunpan/resource/list HTTP/1.1", upstream: "http://127.0.0.1:8238/yunpan/resource/list", host: "web.hjdang.com", referrer: "https://www.hjdang.com/category/%E5%AD%A6%E4%B9%A0?q="
2024/05/29 03:50:01 [error] 2732888#2732888: *24973779 testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request, client: 122.96.46.53, server: web.hjdang.com, request: "POST /yunpan/resource/list HTTP/1.1", upstream: "http://127.0.0.1:8238/yunpan/resource/list", host: "web.hjdang.com", referrer: "https://www.hjdang.com/category/%E5%AD%A6%E4%B9%A0?q="
2024/05/29 03:50:18 [error] 2732888#2732888: *24973790 testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request, client: 122.96.46.53, server: web.hjdang.com, request: "POST /yunpan/resource/list HTTP/1.1", upstream: "http://127.0.0.1:8238/yunpan/resource/list", host: "web.hjdang.com", referrer: "https://www.hjdang.com/category/%E5%AD%A6%E4%B9%A0?q="
2024/05/29 03:50:18 [error] 2732888#2732888: *24973789 testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request, client: 122.96.46.53, server: web.hjdang.com, request: "POST /yunpan/resource/list HTTP/1.1", upstream: "http://127.0.0.1:8238/yunpan/resource/list", host: "web.hjdang.com", referrer: "https://www.hjdang.com/category/%E5%AD%A6%E4%B9%A0?q="
2024/05/29 03:50:21 [error] 2732891#2732891: *24973810 testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request, client: 180.233.86.12, server: web.hjdang.com, request: "POST /user/islogin HTTP/1.1", upstream: "http://127.0.0.1:8238/user/islogin", host: "web.hjdang.com", referrer: "https://www.hjdang.com/d/1638545005108868059"
2024/05/29 03:50:25 [error] 2732890#2732890: *24973818 testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request, client: 218.109.200.144, server: web.hjdang.com, request: "POST /user/islogin HTTP/1.1", upstream: "http://127.0.0.1:8238/user/islogin", host: "web.hjdang.com", referrer: "https://www.hjdang.com/d/1780795623239385089"
2024/05/29 03:50:27 [error] 2732888#2732888: *24973790 testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request, client: 122.96.46.53, server: web.hjdang.com, request: "POST /yunpan/resource/list HTTP/1.1", upstream: "http://127.0.0.1:8238/yunpan/resource/list", host: "web.hjdang.com", referrer: "https://www.hjdang.com/category/%E5%AD%A6%E4%B9%A0?q="
2024/05/29 03:50:29 [error] 2732890#2732890: *24973818 testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request, client: 218.109.200.144, server: web.hjdang.com, request: "POST /user/islogin HTTP/1.1", upstream: "http://127.0.0.1:8238/user/islogin", host: "web.hjdang.com", referrer: "https://www.hjdang.com/d/1780795623239385089"
2024/05/29 03:50:32 [error] 2732890#2732890: *24973834 testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request, client: 116.179.37.84, server: web.hjdang.com, request: "OPTIONS /user/islogin HTTP/1.1", upstream: "http://127.0.0.1:8238/user/islogin", host: "web.hjdang.com", referrer: "https://www.hjdang.com/d/1749969100689408029"
2024/05/29 03:50:32 [error] 2732890#2732890: *24973836 testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request, client: 116.179.37.196, server: web.hjdang.com, request: "POST /user/islogin HTTP/1.1", upstream: "http://127.0.0.1:8238/user/islogin", host: "web.hjdang.com", referrer: "https://www.hjdang.com/d/1749969100689408029"
2024/05/29 03:50:36 [error] 2732888#2732888: *24973790 testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request, client: 122.96.46.53, server: web.hjdang.com, request: "POST /yunpan/resource/list HTTP/1.1", upstream: "http://127.0.0.1:8238/yunpan/resource/list", host: "web.hjdang.com", referrer: "https://www.hjdang.com/category/%E4%B9%A6%E7%B1%8D?q="
2024/05/29 03:50:36 [error] 2732888#2732888: *24973790 testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request, client: 122.96.46.53, server: web.hjdang.com, request: "POST /yunpan/top/article/list HTTP/1.1", upstream: "http://127.0.0.1:8238/yunpan/top/article/list", host: "web.hjdang.com", referrer: "https://www.hjdang.com/category/%E4%B9%A6%E7%B1%8D?q="
2024/05/29 03:50:48 [error] 2732891#2732891: *24973810 testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request, client: 180.233.86.12, server: web.hjdang.com, request: "POST /yunpan/resource/list HTTP/1.1", upstream: "http://127.0.0.1:8238/yunpan/resource/list", host: "web.hjdang.com", referrer: "https://www.hjdang.com/list?q=%E5%9B%BD%E8%AF%AD%E9%9F%A9%E5%89%A7%EF%BC%8C%E5%8F%B0%E9%85%8D%E9%9F%A9%E5%89%A7%E5%90%88%E9%9B%86%EF%BC%9E500%E9%83%A8&x=0.44488566441600863"
复制代码

原因是配置带变量的access_log必须指定root,加上   root   /var/www 就可以了; #一定要加root,否则access_og不能加变量

1
2
3
4
5
6
7
8
9
That's a common pitfall. Doc on access_log says:
 
<strong>The file path can contain variables</strong> (0.7.6+), but such logs have some <strong>constraints</strong>:
 
...
<strong>during each log write the existence of the request’s root directory is checked, and if it does not exist the log is not created.
You didn't set root directory so nginx falls back to default one that is /etc/nginx/html and it doesn't exists.</strong>
 
Just add root /var/www; (or some other existing path) or, as zezollo suggested, create /etc/nginx/html.

 

https://linktr.ee/zjhgx 

https://bento.me/zjhgx163

posted @   zjhgx  阅读(890)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2021-05-29 git问题记录
点击右上角即可分享
微信分享提示