强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan

【前言】

我们项目的短信功能是接第三方,原来对接第三方给我们回执确认请求是get请求我们在排查问题的时候可以通过nginx的日志拿到对方给我们请求的参数;最近我们换了另外一家第三方,新的第三方给我们的确认请求是post,遇到问题排查,发现nginx没有打印具体参数,于是查阅一些资料和运维一起做了实验和线上调整,调整后我们可以拿到请求参数,更方便我们排查问题;

【Nginx设置打印post请求参数】

           一、Nginx配置文件(nginx.conf)设置打印post请求参数:在http模块的log_format中增加 "dm":$request_body 防止中文乱码,增加  escape=json

    log_format main escape=json '{ "@timestamp": "$time_iso8601", ''"remote_addr": "$remote_addr",''"costime": "$request_time",''"realtime": "$upstream_response_time",''"status": $status,''"x_forwarded": "$http_x_forwarded_for",''"referer": "$http_referer",''"request": "$request",''"upstr_addr": "$upstream_addr",''"bytes":$body_bytes_sent,''"dm":$request_body,''"agent": "$http_user_agent" }';access_log  /var/log/nginx/access.log  main;

           二、设置前后的效果对比

1、发送请求的json格式

{"results":[{"price":{"pricePerMessage":0.01,"currency":"aaa"},"messageId":"ff4804ef-6ab6-4abd-984d-ab3b1387e852","to":"385981178","sentAt":"2015-02-12T09:58:20.323+0100","doneAt":"2015-02-12T09:58:20.337+0100","smsCount":1,"status":{"id":5,"groupId":3,"groupName":"DELIVERED","name":"DELIVERED_TO_HANDSET","description":"Message delivered to handset"},"error":{"groupId":0,"groupName":"OK","id":0,"name":"NO_ERROR","description":"No Error","permanent":false}}]
}

2、设置前post请求,nginx打印的结果,很显然没有将参数打印出来

3、设置后post请求,nginx打印参数,发现参数虽然打印出来但是有乱码情况

4、解决乱码

(1)需要在log_format main后加 escape=json

(2)nginx的版本需要是1.15.1及以上

(3)满足以上最终打印出的结果

           三、看nginx日志必要性

1、更加全面:它可以记录访问者的ip浏览器以及请求参数等信息比java的请求日志更加全面;

2、请求大时,java程序处理不过来,这时java日志没有多余访问请求,而nginx中有,有利于排查问题,优化系统性能。

【总结】

1、通过日志可以快速定位问题;

2、排查问题时考虑要全面,从多过维度去思考。

Nginx设置日志打印post请求参数相关推荐

  1. 帆软报表使用及设置日志打印sql

    1.通过日期返回星期数 WEEKDAY(Serial_number):获取日期并返回星期数. eg:  WEEKDAY("2005/9/10")等于6(星期六) 2.条件判断 sw ...

  2. Tomcat日志记录post请求参数

    公司的项目向用户提供接口,但是最近偶尔会出现超时的情况,用户的调用设置的超时时间是1分钟,所以首先要排查代码的执行时间是否超过一分钟 @PostMapping("/updateattachm ...

  3. log_format为nginx设置日志格式

    nginx服务器日志相关指令主要有两条 1.一条是log_format,用来设置日志格式. 2. 另外一条是access_log,用来指定日志文件的存放路径.格式和缓存大小,一般在nginx的配置文件 ...

  4. fidder设置断点,修改请求参数等

    设置断点(来自:http://jingyan.baidu.com/article/17bd8e52216c8d85ab2bb8e9.html): 可以看到当前有一个抓取的很多的包的链接的地址的信息,那 ...

  5. Android 开发之Okhttp网络请求日志打印

    这里写自定义目录标题 Android 开发之Okhttp 网络请求日志打印 OkHTTP网络日志打印 Android 开发之Okhttp 网络请求日志打印 网络请求是开发的日常工作内容之一,网络日志打 ...

  6. 有关日志打印的几点经验

    前段时间,完善智能导航发送告警短信中短信太长接收不到的bug,牵涉出了日志打印的问题:日志打印这件事说小事小,说大也大,写好日志能方便自己调试代码和发现解决问题,以下就是有关日志打印自己总结的几点经验 ...

  7. android 请求参数打印,Android开发-----关于解决Retrofit打印HttpLog和设置连接超时的问题...

    问题, 1 由于Retrofit默认连接超时时间只有10s 某些情况下可能连接时间会超过10s,这个时候就会报出SocketTimeoutException 这个时候我们就需要自己设置超时间, 2 很 ...

  8. Nginx打印所有请求的头参数

    Nginx在access.log日志中打印所有请求(http/https)的头部参数信息 将以下两位博主的文章合并一下就是完整的解决方案,在此表示感谢,我再梳理一下并做相关说明 https://www ...

  9. springboot控制台日志打印到日志文件 (请求路径,执行sql,参数等)

    经过几天的尝试 重终于把这个东西肝出来了 目录结构 我添加太多pom了 忘记有哪些了 也懒得找了 也就是常用的那几个吧 依赖pom 小伙子们自己添加吧!!! 首先你要把你项目跑起来 配置数据源如下 s ...

最新文章

  1. 程序员必练六大项目:从数据结构到操作系统,计算机教授为你画重点
  2. 构建全程电子商务,创新企业经营模式(2)
  3. 数据中心气流管理的基础:密闭系统的比较
  4. 跟Kafka学技术-缓冲池的使用
  5. android 弹起键盘把ui顶上去的解决办法
  6. chrome postman插件_收集了一些Chrome插件神器,助你快速成为老司机
  7. 学到了!程序员大神用这招让开发效率直接提升10倍!!
  8. 多重背包(二进制优化)
  9. create 添加async和不添加的区别_六偏磷酸钠不可怕—谈谈食品添加剂中的用途
  10. 23种设计模式——适配器模式
  11. .netcore入门2:深入理解.NET Core的基元: deps.json, runtimeconfig.json, dll文件
  12. css fixed定位失效问题
  13. 卸载office提示无法打开修补程序包 修补程序包是否存在的解决方法.
  14. 《黑白团团队》第九次团队作业:Beta冲刺第二天
  15. 05流量管理原理-3金丝雀TCP流量整形比例分配
  16. 无线路由器不能产生信号
  17. android盒子远程,电视盒子ADB教程 通过ADB远程安装应用方法
  18. 使用pngquant压缩png图片
  19. 一条 Select 语句 在 Postgresql 中的执行链路
  20. 【Python 机器学习 基础】绘制 sigmoid 函数曲线 || exp:以e为底的指数函数(科普向)

热门文章

  1. 美国空军学习编程,为五角大楼节省了上百万!
  2. 微信警告小游戏“分享滥用”;小米千亿估值再被下调;Facebook 最大规模重组 | CSDN 极客头条...
  3. 史上最大源码泄露事件:iOS 关键源代码被匿名公布在 GitHub 上
  4. 为什么现在的监控系统容易硬盘坏?附原理解析
  5. Spring的XML解析原理,java接口流程图
  6. 将Sublime Text添加到右键菜单中
  7. json解析 spark_PySpark算子处理空间数据全解析(8):构造空间数据的RDD(2)
  8. layui 树状图默认全部展开_SolidWorks 钣金展开基础设定
  9. 未来是计算机科学的天下,美国留学信息与计算机科学发展方向
  10. 中国计算机游戏竞赛,信任与欺骗的游戏:全球计算机游戏程序竞赛,诠释了《老子通释》...