环境:nginx1.16.1

(1)日志类型:access_log(访问日志) error_log(错误日志)rewrite_log

访问日志:通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息

错误日志:记录了访问出错的信息,可以帮助我们定位错误的原因

   重写日志:rewrite_log on; 它将发送所有的 rewrite 相关的日志信息到 error_log 文件中,使用 [notice] 级别。随后就可以在error_log 查看rewrite信息了

(2)设置访问日志:

access_log指令的作用域: http,server,location,limit_except

access_log off; #表示关闭访问日志

access_log path [格式名 [buffer=size] [gzip[=level]] [flush=time] [if=condition]];

    注: path    指定日志存放路径

格式名  指定日志格式,不写则默认为combined,使用自定义格式则写上格式名引入

buffer  指定日志写入时的缓存大小

gzip    日志写入前先进行压缩,指定压缩比1-9,默认1,数值越大压缩速度越慢

flush   设置缓存有效时间

if      条件判断,若为假则该请求不写入日志

      例:access_log /var/logs/nginx-access.log buffer=32k gzip flush=1m

    log_format name [escape=default | json] string ...;  #设置日志格式,字符串中的变量表示日志应写入的内容     

    注: name    格式名

escape   设置导出时日志字符串是json还是default格式。2者区别:没有值的变量,default显示-,json显示空字符

string   日志格式字符串,参数中可使用nginx变量

       eg: log_format main '$remote_addr - $remote_user [$time_local] "$request"' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

     171.44.176.127 - - [21/Nov/2019:12:14:54 +0800] "GET /index/index/index HTTP/1.1" 200 804 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0" "-"

      以上没有值的变量以 -  显示,上述日志写入格式为default

   日志格式相关变量:

      1. 请求信息相关的变量

$bytes_sent  发送给客户端的总字节数

      $body_bytes_sent 发送给客户端的字节数,不包括响应头的大小

      $request              完整的原始请求行,如 "GET / HTTP/1.1"

      $request_length  请求长度(包括请求行,请求头和请求体)

      $request_uri     完整的请求地址,如 https://daojia.com/

      $http_host    请求的主机名

      $connection     连接序列号

      $connection_requests     当前TCP连接发出的请求数量

      $pipe    如果请求是通过http流水线发送,则其值为"p",否则为“."

      $status  响应状态码

      2. 客户端信息相关变量

      $remote_addr     客户端IP

      $remote_user     客户端用户名称,针对启用了用户认证的请求

      $http_referer       请求携带的referer地址

      $http_user_agent       客户端浏览器信息

      $ssl_protocol    SSL协议版本 

      3. 时间相关变量

      $msec    日志写入时间,单位为秒,精度是毫秒

      $request_time    请求处理时长,单位为秒,精度为毫秒,从读入客户端的第一个字节开始,直到把最后一个字符发送张客户端进行日志写入为止

      $time_iso8601   标准格式的本地时间,形如“2017-05-24T18:31:27+08:00”

      $time_local         通用日志格式下的本地时间,如"24/May/2017:18:31:27 +0800"

      4.负载均衡配置相关变量

      $upstream_addr      后台upstream的地址,即真正提供服务的主机地址

      $upstream_status    upstream状态

      $upstream_response_time  请求过程中,upstream响应时间 

      $http_x_forwarded_for  当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器也要进行相关的x_forwarded_for设置。

      即有负载均衡服务器时用此设置获取客户端ip

      其它变量参见nginx官方文档http://nginx.org/en/docs/varindex.html

      设置日志为json格式:

    log_format jsonlog escape=json '{

          "time":"$time_iso8601",
          "host": "$server_addr",
          "client": "$remote_addr",
          "size":"$body_bytes_sent",
          "responsetime":"$request_time",
          "domain": "$host",
          "url":"$request_uri",
          "referer": "$http_referer",
          "agent":"$http_user_agent",
            "status":"$status",
          "x_forwarded_for":"$http_x_forwarded_for"
      }';

(3)设置错误日志:

error_log path [level];          # 作用域: http, server, location, mail, stream, main

  注: path  日志存储的路径

level  日志级别,默认为error

        日志级别:debug | info | notice | warn | error | crit | alert | emerg 级别从左到右依次变低,越低信息越少

       open_log_file_cache off; 如果日志文件路径中有变量,则使用它设置日志文件描述符缓存,提高性能

open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];

注: max          设置缓存中最多容纳的文件描述符数量,如果被占满,采用LRU算法将描述符关闭

inactive     设置缓存存活时间,默认是10s

min_uses     在inactive时间段内,日志文件最少使用几次,该日志文件描述符记入缓存,默认是1次

valid        设置多久对日志文件名进行检查,看是否发生变化,默认是60s

nginx日志设置的更多相关文章

  1. ELK对nginx日志进行流量监控

    ELK对nginx日志进行流量监控 一.前言 线上有一套ELK单机版,版本为5.2.1.现在想把nginx访问日志接入到elk里,进行各个域名使用流量带宽的统计分析.要把nginx日志传输到elk上, ...

  2. Nginx日志导入到Hive0.13.1,同步Hbase0.96.2,设置RowKey为autoincrement(ID自增长)

    ---------------------------------------- 博文作者:迦壹 博客地址:Nginx日志导入到Hive,同步Hbase,设置RowKey为autoincrement( ...

  3. 如何设置nginx日志格式来查看负载分担结果

     转载:http://www.cnblogs.com/LoveJulin/p/5082363.html nginx配置好负载分担后,测试的时候,如何查看负载分担情况:通过设置nginx日志显示: ng ...

  4. nginx之日志设置详解

    nginx的日志设置 access_log access_log是服务器记录了哪些用户,哪些页面以及用户浏览器.ip和其他的访问信息:是一种非常详细的记录信息:如果我们不关心谁访问了我们,可以关闭: ...

  5. 烂泥:切割nginx日志

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 这几天自己看了下博客的nginx日志,发现日志文件发现越来越大. 因为nginx自己不会 ...

  6. ELK+redis搭建nginx日志分析平台

    ELK+redis搭建nginx日志分析平台发表于 2015-08-19   |   分类于 Linux/Unix   |  ELK简介ELKStack即Elasticsearch + Logstas ...

  7. nginx日志分析利器GoAccess

    面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记 ...

  8. 使用elk+redis搭建nginx日志分析平台

    elk+redis 搭建nginx日志分析平台 logstash,elasticsearch,kibana 怎么进行nginx的日志分析呢?首先,架构方面,nginx是有日志文件的,它的每个请求的状态 ...

  9. nginx日志切割脚本

    #!/bin/bash ip=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d ...

随机推荐

  1. Excel-基本操作

    一.EXCEL的数据类型 1.字符型 2.数值型 3.日期型数据和时间型数据 二.快捷键 ctrl+上下左右健 快速选择某区域  上下左右单元格 ctrl+shift+上下左右 快速选择某个取悦 三. ...

  2. [LeetCode] 241. Different Ways to Add Parentheses 添加括号的不同方式

    Given a string of numbers and operators, return all possible results from computing all the differen ...

  3. [LeetCode] 92. Reverse Linked List II 倒置链表之二

    Reverse a linked list from position m to n. Do it in one-pass. Note: 1 ≤ m ≤ n ≤ length of list. Exa ...

  4. oracle--oracle18C DBCA建库(一)

    一,环境配置 克隆或者安装一台oracle18c 只需要安装软件即可 主机名 ip 角色 db_inique oracle18c 192.168.0.162 主 oracle oracle18c2 1 ...

  5. .NetCore 入门篇:理解

    (良心转载)原文地址:https://ken.io/note/dotnet-core-qucikstart-preface 一..NET Core的诞生 聊 .NET Core,就不得不说他的爸爸 . ...

  6. Object.setPrototypeOf() 与Object.getPrototypeOf() 方法的使用

    Object.setPrototypeOf 方法的使用 [1] 将一个指定的对象的原型设置为另一个对象或者null(既对象的[[Prototype]]内部属性). 语法 Object.setProto ...

  7. 'try(A a = new A())' VS 'try finally'

    实现了AutoCloseable接口的类,可以在try的时候直接实例化对象.try代码块完成之后,自动调用close方法,相当于在finally里主动调用.但是出现异常后的流程和try finally ...

  8. C# Thread.Abort方法与ThreadAbortException异常(取消线程与异常处理)

    1.Abort当前线程,后续程序不会执行 class Program { public static Thread thread1; static void Main(string[] args) { ...

  9. HUE-hive常用查询语句整理

    通过hue进行数据导入: ,create table demo_id(`id` string) row format serde 'org.apache.hadoop.hive.serde2.Open ...

  10. 31,Leetcode下一个排列 - C++ 原地算法

    题目描述 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列). 必须原地修改,只允许使用额外常 ...