Nginx中是否可以有多行日志?

时间:2018-11-30 23:41:47

标签: nginx

我正在将日志发送到nginx服务器,并想将这些日志转储到文件中。一次发送一个日志时,我可以使用NginxEchoModule强制nginx读取正文,如下所示:

http {
    log_format log_dump '$request_body';
    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        access_log /logs/dump log_dump;
        location /logs {
            echo_read_request_body;
        }
    }
}

当我一次发送一个日志时,这很好用:

POST /logs HTTP/1.1
Host: www.example.com

123456 index.html was accessed by 127.0.0.1

POST /logs HTTP/1.1
Host: www.example.com

123457 favicon.ico was accessed by 127.0.0.1

但是,当我尝试批处理日志时(避免连接开销和HTTP标头开销):

POST /logs HTTP/1.1
Host: www.example.com

123456 index.html was accessed by 127.0.0.1
123457 favicon.ico was accessed by 127.0.0.1

这是我的日志文件中显示的内容:

123456 index.html was accessed by 127.0.0.1\x0A123457 favicon.ico was accessed by 127.0.0.1

现在,我的假设是,因为一条nginx日志行打算成为 一行 ,所以它对我的换行字符进行编码以确保这一点。有没有办法允许多行Nginx日志?

1 个答案:

答案 0 :(得分:0)

这次我的工作实际上是从一位经验丰富的工程师那里得到的答案:

Native Memory Tracking:

Total: reserved=1678MB, committed=498MB
-                 Java Heap (reserved=256MB, committed=256MB)
                            (mmap: reserved=256MB, committed=256MB)

-                     Class (reserved=1103MB, committed=89MB)
                            (classes #14604)
                            (malloc=3MB #32346)
                            (mmap: reserved=1100MB, committed=85MB)

-                    Thread (reserved=26MB, committed=26MB)
                            (thread #53)
                            (stack: reserved=26MB, committed=26MB)

-                      Code (reserved=261MB, committed=96MB)
                            (malloc=17MB #17740)
                            (mmap: reserved=244MB, committed=79MB)

-                        GC (reserved=1MB, committed=1MB)
                            (mmap: reserved=1MB, committed=1MB)

-                  Internal (reserved=6MB, committed=6MB)
                            (malloc=6MB #48332)

-                    Symbol (reserved=19MB, committed=19MB)
                            (malloc=16MB #168491)
                            (arena=4MB #1)

-    Native Memory Tracking (reserved=5MB, committed=5MB)
                            (tracking overhead=4MB)

This requires nginx version 1.13.10,但阻止nginx在日志中转义换行符:

log_format log_dump escape=none '$request_body';