NGINX date_udf 定义日志
Nginx日志自动按日期存储
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。但是他的日志系统实在是太欠了,所有的日志都会输出到一个文件中,随着时间的过去,那个文件变得越来越大,对我们分析日志非常不方便。
网上目前出来的方式都是在 linux下写脚本来分割日志,但是这种方式很不方便,尤其是对linux环境不熟悉的同学,写这个很费劲,而且系统重启之类的,这个脚本要重新启动,等等,总之很烦。
但是今天,我给大家带来了完美的解决方案,那就是修改nginx源代码,让他支持日志分割。
可能有的朋友看到这会说这个更麻烦,确实修改源代码不是一件容易的事。不愿意看如何修改的朋友,这里直接给出修改后的链接,下载就能用了
nginx-1.4.1 下载地址: nginx-1.4.1-with-log-split
nginx-1.5.9 下载地址: nginx-1.5.9-with-log-split (推荐)
上面的1.4.1版只支持新建文件,1.5.9支持新建文件和文件夹(推荐下载)
日志配置方式请参考src文件夹中的nginx.conf来配置
1.4.1 配置文件中新增了 date_udf (格式:yyyy-MM-dd) 变量
1.5.9 配置文件中新增了 date_udf (格式:yyyy-MM-dd), year_udf (格式:yyyy), month_udf (格式:MM), day_udf (格式:dd)。
# access_log logs/yearudf/yearudf/month_udf/dayudf/dayudf/date_udf-access.log main; //别忘了把配置文件中的 main 放开
上面的方式配置 到时候日志会在 logs/yyyy/MM/dd/yyyy-MM-dd-access.log 文件中。
特别提示:请给你指定的logs文件夹指定nginx用户的写权限(所谓的nginx用户是指 nginx 配置文件中指定的那个用户)
==================================
作者:知乎用户 链接:https://www.zhihu.com/question/20005591/answer/13655393 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
在ngx_http_log_module的log_format(http://wiki.nginx.org/HttpLogModule#log_format)中提供的变量可以理解为内置变量,只有在对log格式进行制定时才可以使用。对此,我觉得可能是因为在NGX_HTTP_LOG_PHASE阶段对请求的处理其实已经结束,所以作者在设计时觉得没有必要把这些变量作为常规变量暴露出来。
我知道以下的模块或项目可以访问到nginx的时间变量。 •ngx_time_var(http://bit.ly/zfAskP),如果你的需求不复杂,它可以胜任。
•ngx_set_misc (http://wiki.nginx.org/HttpSetMiscModule#set_local_today),提供了yyyy-mm-dd格式的日期。
•ngx_lua(https://github.com/chaoslawful/lua-nginx-module),其中提供了和时间相关的api。
•Tengine(http://tengine.taobao.org/document_cn/variables_cn.html),官方微博上说这些变量是为了实现按时间自动切割日志保留的。
PS:大部分nginx时间相关的api在src/core/ngx_times.h,里面时间相关的变量都是缓存过的,可以避免系统调用。
NGINX date_udf 定义日志的更多相关文章
- Nginx配置(日志服务器中关于日志的产生)
一:概括 1.需要配置的概括 定义日志格式 日志的分割字段:^A 日志格式:IP地址^A服务器时间^A请求参数 配置location,记录请求日志到本地磁盘 将数据按照给定的日志格式存储到本地磁盘 二 ...
- Nginx 訪问日志增长暴增出现尖刀的具体分析
前言: Nginx日志里面Mobileweb_access.log增长特别大.一天上百兆.将近100W的訪问记录.依照我们眼下的规模,热点用户才500个左右.就算人人用手机app訪问 ...
- Nginx如何对日志文件进行配置?
在我们日常工作开发中,对调试bug最重要的手段就是查看日志和断点调试了. 今天我们来说日志文件,Nginx的日志文件一般保存的是访问日志和错误日志. 1. 用来log_format指令设置日志格式 l ...
- nginx变量(日志log_format)
nginx变量(日志log_format) HTTP请求变量 - arg_PARAMETER.http_HEADER.sent_http_HEADER 它是指http请求中的变量,举例: curl访问 ...
- 091实战 Nginx配置(日志服务器中关于日志的产生)
一:概括 1.需要配置的概括 定义日志格式 日志的分割字段:^A 日志格式:IP地址^A服务器时间^A请求参数 配置location,记录请求日志到本地磁盘 将数据按照给定的日志格式存储到本地磁盘 二 ...
- Nginx的访问日志配置信息详解
Nginx的访问日志可以让我们知晓用户的地址,网站的那些部分最受欢迎,以及用户浏览时间等.Nginx会把每个用户的访问日志记录到指定的日志文件中. Nginx主要有两个参数来控制 log_format ...
- 循序渐进nginx(三):日志管理、http限流、https配置,http_rewrite模块,第三方模块安装,结语
目录 日志管理 access_log error_log 日志文件切割 自定义错误页 http访问限流 限制请求数 语法 使用 限制连接数 语法 测试 补充: https配置 使用 生成证书 配置ng ...
- flink---实时项目--day01--1. openrestry的安装 2. 使用nginx+lua将日志数据写入指定文件中 3. 使用flume将本地磁盘中的日志数据采集到的kafka中去
1. openrestry的安装 OpenResty = Nginx + Lua,是⼀一个增强的Nginx,可以编写lua脚本实现⾮非常灵活的逻辑 (1)安装开发库依赖 yum install -y ...
- Nginx日志切割,以及脚本上传nginx的切割日志
一:日志切割步骤 命令都在root下进行 1.创建目录 mkdir -p /etc/opt/modules/bin ## 创建文件夹 2.上传cut 3.观察目录 4.修改的cut文件 5.检测 需要 ...
随机推荐
- 连接zookeeper集群
连接到ZooKeeper集合 ZooKeeper类通过其构造函数提供connect功能.构造函数的签名如下 : ZooKeeper(String connectionString, int sessi ...
- ActiveMQ安装与持久化消息
activityMQ官网:http://activemq.apache.org/ 有windows版与linux版 windows版启动 在bin目录下双击activemq.bat linux版的安 ...
- XSS-Proxy
关于XSS(cross site scripting),相信对此有过研究的人已经感受到了它的“魅力”,权威机构也公布了最近的安全数据,xss已经上升为第二大网络安全隐患: 于此我想通过此文浅析一下xs ...
- javascript快速入门4--函数与内置对象
函数 函数(又称为方法)用于对一大段为了达到某种目的的代码进行归类,以使代码更具有条理: //一段计算三角形面积的代码 var wide=window.prompt("请输入三角形的底边长度 ...
- Invalidate、RedrawWindow与UpdateWindow的差别
一:什么时候才会发生重绘窗体的消息? 当须要更新或又一次绘制窗体的外观时,应用程序就会发送WM_PAINT消息. 对窗体进行又一次绘制. 二:Invalidate() -- RedrawW ...
- PHP测试用例-前言 1
前提知识准备 在学习本课程之前,你需要准备以下知识点: 掌握一般的PHP开发技能,使用面向对象的框架开发过三个月以上 会一些JS知识 了解http协议 拥有以下知识会学得更加顺利: 掌握PHPUnit ...
- How to simplify a PHP code with the help of the façade pattern?
原文:https://phpenthusiast.com/blog/simplify-your-php-code-with-facade-class ------------------------- ...
- Node.js 访问https网站
源码: //==================================================== // 访问https://www.zhihu.com/得到pagecode // ...
- Java8 读写锁的改进:StampedLock(笔记)
StampedLock是Java8引入的一种新的所机制,简单的理解,可以认为它是读写锁的一个改进版本,读写锁虽然分离了读和写的功能,使得读与读之间可以完全并发,但是读和写之间依然是冲突的,读 ...
- 微信小程序 - 文本框显示限制最大长度
wxml <view class='textarea-count'> <textarea placeholder='请输入文字' bindinput="getWords&q ...