最新。頭版

  • 本文永久連結: https://dwatow.github.io/2024/06-19-nginx-log-format-json-in-http-body/
  • 在 nginx 的 log 顯示請求的 body(json 格式)

    1. 在 nginx 的 log 顯示請求的 body(json 格式)
      1. ssh 登入
      2. 檢查 nginx 版本
      3. 先看一下有沒有設定
      4. 編輯設定檔
      5. 測試 nginx 設定檔正確性
      6. 無縫重啟 nginx
      7. 查看 log 看效果
    2. 加碼(舊版的話)
      1. Python[1]

    在 nginx 的 log 顯示請求的 body(json 格式)

    ssh 登入

    ssh 帳號@主機位址

    必要的話,要用 -i 來指定使用的 key

    檢查 nginx 版本

    nginx -V

    必須注意 escape=json 要 Nginx 1.11.5 之後才支援

    先看一下有沒有設定

    less /etc/nginx/nginx.conf

    注意 http 段落中,有一個在設定 log 的地方,內容大約如下

    http {
    ...
    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    ...
    }

    編輯設定檔

    sudo vim /etc/nginx/nginx.conf

    要設定 nginx 的 log format 請求才會出現 JOSN 的內容

    http {
    ##
    # Logging Settings
    ##

    # log_format compression
    # '[$time_local] $remote_addr - $status '
    # '"$request" $request_body';

    log_format json_log
    # escape=json # Nginx 1.11.5 之後才支援
    '[$time_local] $remote_addr - $status '
    '"$request" $request_body';

    access_log /var/log/nginx/access.log json_log;
    error_log /var/log/nginx/error.log;
    }
    1. log_format json_log escape=json

    宣告一個 log_format 叫做 json_log 格式,escape=json 指定 json 格式處理特殊字元。

    1. access_log /var/log/nginx/access.log json_log;

    設定 access_log 在 /var/log/nginx/access.log 以 json_log 格式儲存。

    測試 nginx 設定檔正確性

    確認無誤之後,再重啟,所以要先測試一下指令是否有錯誤

    sudo nginx -t 

    無縫重啟 nginx

    透過 systemctl 重啟 nginx (推薦使用)

    sudo systemctl reload nginx

    另一種寫法,直接重啟 nginx

    sudo nginx -s reload

    查看 log 看效果

    sudo tail -f /var/log/nginx/access.log

    加碼(舊版的話)

    Python[1]

    decode.py

    import json

    msg = """
    {\x22id\x22:1}
    """

    res_obj = json.loads(msg.encode('raw_unicode_escape').decode('utf8'))
    print(json.dumps(res_obj, ensure_ascii=False))

    執行後會印出解碼後的樣子。

    python3 decode.py
    {"id":1}

    1. Python3解决Nginx日志的中文乱码问题 ↩︎

標籤雲

.new framework 2018鐵人賽 API Doc Aglio Arduino Atom Block Boost Box Model C sharp CRUD CSS CSS Unit CSS3 C_and_Cpp Code Complete 2 Cpp沉思錄 Design Pattern Django ECMA-262 ECMAScript Flex Git HPX HTML Inline JavaScript Jenkins KnR2 LIFF LINE MFC controls MOPCON Media Query OAuth Position Pseudo-elements RWD Raspberry Pi 4 Render tree Rulest Order SVN Selector Sliverlight Specificity TC39 TDD TED TED特區 Transition Ubuntu Vendor Prefix WIN32 API/MFC XML XPath XSLT Xilinx angular1 angularjs animation api assertion async awk axios babel background bash blogger body bootstrap border bugTracker callback canvas chatbot cloud fonts component controller cpp css css-loader database design pattern display docker docsify e2e env eslint express facebook file api file-loader filter flex-grow flex-shrink fontawesome foreign key git git reset git-ftp gitalk google gulp hackmd heroku hexo http https husky import iview ivuew javascript jest jquery json keyframes linux login mariadb markdown mentor migration mixin mock model monent nginx ngork node-sass nodejs npm oo opacity orm outline pm2 postman prettier promise protractor proxy pure component python sequelize shell sign-in spy ssl stub sublime text2 swap swing dance test double transition unit test unit testing v-model vee-validate viewport visibility vue vue-cli vue-loader vue-masonry vue-router vue-slot vuex web camp webpack webpack loader which wiki zip zsh 七股宛蓁家兩天一夜 三相發電 中柱 人月神話 人機互動 你所不知道的JS 你所不知道的js 再讀一本書 凱宇皓月 動畫特效 十年之後成為大師 台南 和道服說話 圖解柔道之術 團隊溝通技巧 在道館的日子 好想工作室 字型設定 完美 camp 進化論 家家有本難唸的經 小旅行 工業風 影像處理 後搖臂 怦然心動的人生整理魔法 手把開關 抱怨VC6 招募 日舞台南 服三的日子 東岸軍旅 柔道社與我 流浪文章 測試工具 爛 code 收集器 爬蟲 版本控制 狼記事 生平處女秀之電腦裝機 生活小事 直流 CDI 看書 研究所的日子 社大的日子 社服社與我 系統設計 網誌記事 網頁前端技術 舊秋調 藝術 行列輸入法 設計 設計師的路 資料庫 資料庫正規則 踩發桿 追逐我在墾丁*天氣晴 避震器 重構 野狼 鈞祐的獨立山兩天一夜露營 電子DIY 電路 音響拆裝過程 高壓線圈 coil