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. |
喜欢艺术的码农
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2021-05-29 git问题记录