千家信息网

如何将Nginx日志改成JSON格式

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章将为大家详细讲解有关如何将Nginx日志改成JSON格式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Nginx 日志默认为普通文本的格式,例如,下面是 N
千家信息网最后更新 2026年10月31日如何将Nginx日志改成JSON格式

这篇文章将为大家详细讲解有关如何将Nginx日志改成JSON格式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Nginx 日志默认为普通文本的格式,例如,下面是 Nginx 的一行访问日志:

10.88.122.105 - - [02/Dec/2017:09:15:04 +0800] "GET /js/pagination.js HTTP/1.1" 304 0 "http://10.88.105.20:8063/stockrecommand.html" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)" "-" 0.000

为了便于利用 Elastic Stack 日志平台收集展示 Nginx 的日志,可以将 Nginx 的日志改成 json 的格式。修改后的 json 日志格式如下所示:

{ "@timestamp": "12/Dec/2017:14:30:40 +0800", "remote_addr": "10.88.122.108", "referer": "-", "request": "GET / HTTP/1.1", "status": 304, "bytes":0, "agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36", "x_forwarded": "-", "up_addr": "-","up_host": "-","up_resp_time": "-","request_time": "0.000" }

为了修改 Nginx 的日志格式改成 json,需要修改 Nginx 的配置文件,笔者 Nginx 的配置文件为 /usr/local/nginx/conf/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';  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 格式:

access_log logs/access.log log_json;

修改 Nginx 的配置,重启 Nginx ,便可以看到 json 格式的日志,重启 Nginx:

nginx -s reload

关于"如何将Nginx日志改成JSON格式"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

日志 格式 配置 文件 篇文章 普通 内容 文本 更多 不错 实用 一行 字符 字符串 就是 平台 手工 文章 知识 笔者 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡 科技与互联网发展 合肥互联网科技公司 互联网金融 科技创新 互联网和高科技公司 互联网科技大奖都有哪些公司 996高科技互联网公司 互联网科技大赛获奖感言 科技赋能视角下互联网保险发展 科技互联网的核心竞争力 产业互联网科技服务公司 互联网与数字科技关系 互联网风格科技公司名称 互联网科技手抄报图片 中国科技和美国互联网 北京军民互联网科技公司 安徽零酒互联网科技有限公司 盐城市攀科互联网科技有限公司 现代科技的标志之一的互联网 广州全民伙伴互联网科技有限公司 深圳市人人互联网科技有限公司 山东特亿宝互联网科技有限公司 高科技与互联网 合肥互联网科技公司 互联网科技实习生岗位职责 科技互联网大厂 互联网媒体平台算高科技产业 互联网方面的科技前沿 富国互联网金融科技混合基金 南京一网一红互联网科技有限公司
0