nginx日志输出配置json格式

nginx服务器日志相关指令主要有两条:一条是log_format,用来设置日志格式;另外一条是access_log,用来指定日志文件的存放路径、格式和缓存大小。
log_format指令用来设置日志的记录格式,它的语法如下:
log_format name format {format ...}
其中name表示定义的格式名称,format表示定义的格式样式。

网上统一方法:

修改nginx.conf配置文件

http {include       mime.types;default_type  application/octet-stream;charset  utf-8;# 原有日志格式,不能注释或者去掉log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for" $request_time';# json日志格式log_format log_json '{"@timestamp": "$time_local", ''"remote_addr": "$remote_addr", ''"referer": "$http_referer", ''"request": "$request", ''"status": $status, ''"bytes": $body_bytes_sent, ''"agent": "$http_user_agent", ''"x_forwarded": "$http_x_forwarded_for", ''"up_addr": "$upstream_addr",''"up_host": "$upstream_http_host",''"up_resp_time": "$upstream_response_time",''"request_time": "$request_time"'' }';access_log  logs/access.log log_json; # 引用日志格式名称(省略内容)
}

        在 Nginx 的配置文件nginx.conf中,我们定义了两种的日志格式:main和log_json,其中,main为普通的文本格式,log_json为 json 格式。log_json其实就是手工构造一个 json 字符串。定义了 json 的日志格式后,便可以指定 access log 为 json 格式,修改 Nginx 的配置,重启 Nginx ,便可以看到 json 格式的日志,重启 Nginx。

附加:

可能遇到的问题:

背景:
    因为我这边是通过nginx去代理了很多域名,所以会有很多平台访问的日志,通过在nginx.conf主配置文件增加  include vhosts/*.conf; 导入主机配置,所以会存在一个server段中只能有一个名称的问题。

正确操作:

修改nginx.conf配置文件

[root@elk-nginx-01 conf]# cd /data/services/nginx/conf/
[root@elk-nginx-01 conf]# pwd
/data/services/nginx/conf
[root@elk-nginx-01 conf]# ll
总用量 72
-rw-r--r-- 1 root root 1077 9月   3 09:45 fastcgi.conf
-rw-r--r-- 1 root root 1077 9月   3 09:45 fastcgi.conf.default
-rw-r--r-- 1 root root 1007 9月   3 09:45 fastcgi_params
-rw-r--r-- 1 root root 1007 9月   3 09:45 fastcgi_params.default
-rw-r--r-- 1 root root 2837 9月   3 09:45 koi-utf
-rw-r--r-- 1 root root 2223 9月   3 09:45 koi-win
-rw-r--r-- 1 root root 5231 9月   3 09:45 mime.types
-rw-r--r-- 1 root root 5231 9月   3 09:45 mime.types.default
-rw-r--r-- 1 root root 3729 9月   3 15:49 nginx.conf
-rw-r--r-- 1 root root 2656 9月   3 13:59 nginx.conf-bak0903
-rw-r--r-- 1 root root 2656 9月   3 09:45 nginx.conf.default
-rw-r--r-- 1 root root  636 9月   3 09:45 scgi_params
-rw-r--r-- 1 root root  636 9月   3 09:45 scgi_params.default
drwxr-xr-x 2 root root  134 9月   3 11:34 sslkeys
-rw-r--r-- 1 root root  664 9月   3 09:45 uwsgi_params
-rw-r--r-- 1 root root  664 9月   3 09:45 uwsgi_params.default
drwxr-xr-x 2 root root   87 9月   3 16:53 vhosts
-rw-r--r-- 1 root root 3610 9月   3 09:45 win-utf
[root@elk-nginx-01 conf]# vim nginx.confhttp {include       mime.types;default_type  application/octet-stream;charset  utf-8;# 原有日志格式,不能注释log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for" $request_time';# json日志格式log_format json '{"@timestamp": "$time_local", ''"remote_addr": "$remote_addr", ''"referer": "$http_referer", ''"request": "$request", ''"status": $status, ''"bytes": $body_bytes_sent, ''"agent": "$http_user_agent", ''"x_forwarded": "$http_x_forwarded_for", ''"up_addr": "$upstream_addr",''"up_host": "$upstream_http_host",''"up_resp_time": "$upstream_response_time",''"request_time": "$request_time"'' }';#导入主机配置include vhosts/*.conf;(省略内容)
}
保存退出![root@elk-nginx-01 conf]# pwd
/data/services/nginx/conf
[root@elk-nginx-01 conf]# cd vhosts/
[root@elk-nginx-01 vhosts]# ll
总用量 12
-rw-r--r-- 1 yfbkf yfbkf  921 9月   3 15:37 gonggao.conf
-rw-r--r-- 1 yfbkf yfbkf 1482 9月   3 16:50 gongdan.conf
-rw-r--r-- 1 yfbkf yfbkf 1151 9月   3 14:42 gongmo.conf

 然后重启nginx

总结:

1、原有的日志格式不能注释或者去掉,只能新增一个log_format;
2、新增自定义一份日志记录格式,需要注意,log_format指令设置的名称在配置文件中是不能重复的(比如我json日志格式名称 json)
3、原有的日志格式如果调整了,需要在log后加上名称才生效;

好了,这就是nginx日志输出配置json格式的方法了,如有问题可与博主一起交流讨论!

nginx日志输出配置json格式相关推荐

  1. python 日志输出为json格式文件_Py修行路 python基础 (二十一)logging日志模块 json序列化 正则表达式(re)...

    一.日志模块 两种配置方式:1.config函数 2.logger #1.config函数 不能输出到屏幕 #2.logger对象 (获取别人的信息,需要两个数据流:文件流和屏幕流需要将数据从两个数据 ...

  2. java agent_GitHub - dingjs/javaagent: 基于javaagent开发的APM工具,收集方法的执行次数和执行时间,定时输出成json格式的日志。...

    Javaagent 概述 javaagent是一个简单优雅的java agent,利用java自带的instrument特性+javassist字节码编辑技术,实现了无侵入的方法级性能监控.相比于Ne ...

  3. php输出json到表格,PHP中把数据库查询结果输出为json格式

    header("Content-type:text/html;charset=utf-8");//字符编码设置 $servername = "localhost" ...

  4. HAproxy增加日志记录功能和自定义日志输出内容、格式

    http://blog.51cto.com/eric1/1854574 一.增加haproxy日志记录功能   1.1 由于数据分析的需要,我们必须打开haproxy日志,记录相关信息. 在配置前,我 ...

  5. Nginx压缩输出配置

    Nginx压缩输出配置 Gzip(GNU-ZIP) 一种压缩技术,经过gzip压缩后,页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候,速度会快得多. Gzip的压缩页面,需要浏览器和服 ...

  6. nginx 日志输出json格式

    背景 nginx 默认输出acces日志格式是message格式.现在都做日志统一分析ELK了,message格式就不是很适用了. 所以输出json格式就应用而生了. 修改 nginx.conf 配置 ...

  7. 日志转化成json格式

    apache_access.log 将LogFormat 原配置行注释.添加如下内容: LogLevel warn <IfModule log_config_module> LogForm ...

  8. Spring Boot系列教程六:日志输出配置log4j2

    一.前言  spring boot支持的日志框架有,logback,Log4j2,Log4j和Java Util  Logging,默认使用的是logback日志框架,笔者一直在使用log4j2,并且 ...

  9. SpringBoot中LogBack日志输出配置记录

    <?xml version="1.0" encoding="UTF-8"?><!-- Created by jinKai on 2017/1/ ...

最新文章

  1. Android 跳转Activity 的时候出现闪屏问题处理
  2. 指针的本质2-void和void*及其应用在nginx中的应用
  3. java学习--抽象类与接口
  4. Freemarker + xml 实现Java导出word
  5. [SPOJ375]QTREE - Query on a tree【树链剖分】
  6. linux登陆界面卡死_Linux 上最好的五款音乐播放器
  7. fir.im Weekly - 除了新 MacBook Pro,近期值得关注的移动开发好资源
  8. IBatisNet的配置(SqlMap.config)
  9. 浅谈Event Loop
  10. 两级联动mysql怎样查询_我的二级联动下拉框(方便以后查询)
  11. uml在线画图共享网站
  12. Python顺序结构
  13. php实现 三角形_HTML纯CSS绘制三角形(各种角度)
  14. python登录qq定时发消息_python自动发送qq消息
  15. vba 读取图片尺寸
  16. 观察者模式在游戏开发中的应用
  17. ThinkPHP中IP地址定位,包括IP地址库文件
  18. 百家号同步公众号的自媒体工具有吗?
  19. 推动前端团队基础设施建设流程方案计划书
  20. [1609.04802] SRGAN中的那些loss

热门文章

  1. C语言按子串分割字符串
  2. linux下开放sftp端口,在Linux系统中更改默认的SFTP端口及使用新的SFTP端口
  3. ZYNQ AXI GPIO中断实验——FPGA Vitis篇
  4. linux shuf 和mac gshuf
  5. MICK-SQL进阶教程 1.1 CASE表达式
  6. js回调函数(超详细)
  7. zx-calendar JS日历插件(带Vue2/Vue3/React版本)
  8. centos 重启网卡
  9. 一起学OCP:oracle-082题库及解析(21-40)持续更新
  10. 军事演习绝地求生C++代码