• 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,里面时间相关的变量都是缓存过的,可以避免系统调用。
    
  • 相关阅读:
    【CoreData】多个数据库使用
    栅格那点儿事(四B)---多波段栅格数据的显示
    栅格那点儿事(四A)---栅格的显示与渲染
    栅格那点儿事(三)---关于压缩
    栅格那点儿事(二)---细看Raster属性
    栅格那点儿事(一)---Raster是个啥子东西
    栅格那点儿事(零)
    ArcMap如何修改地图坐标系统
    ArcGIS中利用ArcMap将地理坐标系转换成投影坐标系(从WKID=4326到WKID=102100)
    什么是TOPO学
  • 原文地址:https://www.cnblogs.com/gaoyuechen/p/8109333.html
Copyright © 2020-2023  润新知