我的Apache 2错误日志包含分割为单个字符的所有错误消息行

时间:2015-07-05 14:04:30

标签: apache curl logging process stderr

我的意思是,所有错误消息都被分成一个字符长度,这些是我的error_log中的行。例如,如果我的CGI应用程序的错误消息是“错误”,我可以看到5行文本,错误消息的每个字符一行,附加引用和其他一些时间信息。由于下载进度指示器,我的错误消息来自forked cURL进程和countains \ r \ n(回车)字符。我能做些什么来逐行获取我的cURL进程的错误输出/ stderr?

1 个答案:

答案 0 :(得分:0)

幸运的是,我设法从stdlib找到了Popen3的解决方案:

require "open3"

cmd=%Q{curl -b cookie.txt 'http://www.example.com/file/afancyfileid/yetanotherfilename.avi' -L -O -J}

Open3.popen3(cmd) {|stdin, stdout, stderr, wait_thr|
  pid = wait_thr.pid # pid of the started process.
  line_no=0
  stderr.each_char do |c| 
       if c=="\r" then 
        line_no+=1
        STDERR.puts if line_no % 5 == 0
       else
        STDERR.print c if line_no % 5 == 0
       end
  end
  exit_status = wait_thr.value 
}

我只打印每5行不要让我的error_log增长得那么快。