Nginx 记录 Body 日志,并将日志中的 Unicode 字符显示为对应的中文

  • Post author:
  • Post category:其他




1 问题描述

有些情况下,需要查看接口的请求 body,这时需要将请求记录到日志文件里。nginx记录日志时,会将中文写成 Unicode 字符,如果需要查看,就需要一行一行复制出来看。这时,可以利用 echo 命令进行查看。



2 Nginx 记录 Body 配置

http {
    log_format  postlog  '$request - "$request_body"';
 
    server {
        listen 8080;
        location /url {
            proxy_pass http://127.0.0.1:1080;
            access_log /path/to/log/post.log postlog;
        }
    }
}



3 显示中文命令


echo

命令用于在shell中打印shell变量的值,或者直接输出指定的字符串。而

echo -e

是处理特殊字符的命令,利用该特性可以实现英文与 Unicode 混合文本中的内容进行正常输出。

-e:激活转义字符。使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

  • \a 发出警告声;
  • \b 删除前一个字符;
  • \c 最后不加上换行符号;
  • \f 换行但光标仍旧停留在原来的位置;
  • \n 换行且光标移至行首;
  • \r 光标移至行首,但不换行;
  • \t 插入tab;
  • \v 与\f相同;
  • \ 插入\字符;
  • \nnn 插入nnn(八进制)所代表的ASCII字符;

因此,使用 Linux 自带的

echo -e

命令即可查看 Unicode 文本。



3.1 使用方法

cd /path/to/nginx/log # 进入 Nginx 日志文件夹
text=`tail -n 1000 access.log` # 输出末尾 1000 行日志
echo -e ${text} # 显示日志



版权声明:本文为Orainge原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。