wvanbergen/request-log-analyzer

Exception on ActionDispatch::Http::UploadedFile log?

Closed this issue · 3 comments

Using RLA 1.13.3 and trying to analyze a log file with the following Rails 4 action:

I, [2014-11-04T11:42:09.958586 #22508]  INFO -- : Started POST "/actions/upload" for 79.241.76.41 at 2014-11-04 11:42:09 +0100
I, [2014-11-04T11:42:09.966595 #22508]  INFO -- : Processing by BranchController#upload as HTML
I, [2014-11-04T11:42:09.966685 #22508]  INFO -- :   Parameters: {"X-Requested-With"=>"IFrame", "X-HTTP-Accept"=>"application/json, text/javascript, */*; q=0.01", "image"=>#<ActionDispatch::Http::UploadedFile:0x00000005522ce0 @tempfile=#<Tempfile:/tmp/RackMultipart20141104-22508-unv373>, @original_filename="2010-10-30 13.49.00.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"image\"; filename=\"2010-10-30 13.49.00.jpg\"\r\nContent-Type: image/jpeg\r\n">}
I, [2014-11-04T11:42:10.215899 #22508]  INFO -- : Completed 200 OK in 249ms (Views: 0.3ms | ActiveRecord: 18.2ms)

I get the Exception:

request-log-analyzer /tmp/rails_test.log2 
Request-log-analyzer, by Willem van Bergen and Bart ten Brinke - version 1.13.3
Website: http://railsdoctors.com

/home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.3/lib/request_log_analyzer/request.rb:60:in `eval': (eval):1: syntax error, unexpected tCONSTANT, expecting '}' (SyntaxError)
...00005522ce0 @tempfile="Tempfile:/tmp/RackMultipart20141104-2...
...                               ^
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.3/lib/request_log_analyzer/request.rb:60:in `convert_eval'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.3/lib/request_log_analyzer/request.rb:17:in `convert_value'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.3/lib/request_log_analyzer/line_definition.rb:119:in `block in convert_captured_values'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.3/lib/request_log_analyzer/line_definition.rb:116:in `each'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.3/lib/request_log_analyzer/line_definition.rb:116:in `each_with_index'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.3/lib/request_log_analyzer/line_definition.rb:116:in `convert_captured_values'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.3/lib/request_log_analyzer/request.rb:134:in `add_parsed_line'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.3/lib/request_log_analyzer/request.rb:165:in `<<'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.3/lib/request_log_analyzer/source/log_parser.rb:310:in `update_current_request'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.3/lib/request_log_analyzer/source/log_parser.rb:225:in `parse_line'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.3/lib/request_log_analyzer/file_format.rb:84:in `block (2 levels) in autodetect'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.3/lib/request_log_analyzer/file_format.rb:84:in `each'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.3/lib/request_log_analyzer/file_format.rb:84:in `block in autodetect'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.3/lib/request_log_analyzer/file_format.rb:82:in `open'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.3/lib/request_log_analyzer/file_format.rb:82:in `autodetect'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.3/lib/request_log_analyzer/controller.rb:83:in `build_from_arguments'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.3/bin/request-log-analyzer:133:in `<top (required)>'
        from /home/dave/.rvm/gems/ruby-2.1.4/bin/request-log-analyzer:23:in `load'
        from /home/dave/.rvm/gems/ruby-2.1.4/bin/request-log-analyzer:23:in `<main>'
        from /home/dave/.rvm/gems/ruby-2.1.4/bin/ruby_executable_hooks:15:in `eval'
        from /home/dave/.rvm/gems/ruby-2.1.4/bin/ruby_executable_hooks:15:in `<main>'

I think this bug was fixed recently. Could you try with the latest master? If the fix works I will release it as a new version.

Thanks for the reply, @wvanbergen - tried with commit fcb6deb (I set the version to 1.13.4 just to clarify the debug output was using the correct gem):

Test input:

dave@ubuntults:~/request-log-analyzer$ cat /tmp/rails_test.log
I, [2014-11-03T08:27:52.665725 #62523]  INFO -- : Started POST "/actions/upload" for 79.241.126.27 at 2014-11-03 08:27:52 +0100
I, [2014-11-03T08:27:52.666607 #62523]  INFO -- : Processing by BranchController#upload as HTML
I, [2014-11-03T08:27:52.666678 #62523]  INFO -- :   Parameters: {"X-Requested-With"=>"IFrame", "X-HTTP-Accept"=>"application/json, text/javascript, */*; q=0.01", "image"=>#<ActionDispatch::Http::UploadedFile:0x000000057aec70 @tempfile=#<Tempfile:/tmp/RackMultipart20141103-62523-15ixzw5>, @original_filename="carscents.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"image\"; filename=\"carscents.jpg\"\r\nContent-Type: image/jpeg\r\n">}
I, [2014-11-03T08:27:52.821151 #62523]  INFO -- : Completed 200 OK in 154ms (Views: 0.3ms | ActiveRecord: 1.6ms)

Result:

dave@ubuntults:~/request-log-analyzer$ request-log-analyzer /tmp/rails_test.log3 
Request-log-analyzer, by Willem van Bergen and Bart ten Brinke - version 1.13.4
Website: http://railsdoctors.com

/home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.4/lib/request_log_analyzer/request.rb:60:in `eval': (eval):1: syntax error, unexpected '}' (SyntaxError)
...Content-Type: image/jpeg\r\n">}
...                               ^
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.4/lib/request_log_analyzer/request.rb:60:in `convert_eval'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.4/lib/request_log_analyzer/request.rb:17:in `convert_value'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.4/lib/request_log_analyzer/line_definition.rb:119:in `block in convert_captured_values'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.4/lib/request_log_analyzer/line_definition.rb:116:in `each'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.4/lib/request_log_analyzer/line_definition.rb:116:in `each_with_index'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.4/lib/request_log_analyzer/line_definition.rb:116:in `convert_captured_values'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.4/lib/request_log_analyzer/request.rb:134:in `add_parsed_line'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.4/lib/request_log_analyzer/request.rb:165:in `<<'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.4/lib/request_log_analyzer/source/log_parser.rb:310:in `update_current_request'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.4/lib/request_log_analyzer/source/log_parser.rb:225:in `parse_line'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.4/lib/request_log_analyzer/file_format.rb:84:in `block (2 levels) in autodetect'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.4/lib/request_log_analyzer/file_format.rb:84:in `each'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.4/lib/request_log_analyzer/file_format.rb:84:in `block in autodetect'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.4/lib/request_log_analyzer/file_format.rb:82:in `open'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.4/lib/request_log_analyzer/file_format.rb:82:in `autodetect'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.4/lib/request_log_analyzer/controller.rb:83:in `build_from_arguments'
        from /home/dave/.rvm/gems/ruby-2.1.4/gems/request-log-analyzer-1.13.4/bin/request-log-analyzer:133:in `<top (required)>'
        from /home/dave/.rvm/gems/ruby-2.1.4/bin/request-log-analyzer:23:in `load'
        from /home/dave/.rvm/gems/ruby-2.1.4/bin/request-log-analyzer:23:in `<main>'
        from /home/dave/.rvm/gems/ruby-2.1.4/bin/ruby_executable_hooks:15:in `eval'
        from /home/dave/.rvm/gems/ruby-2.1.4/bin/ruby_executable_hooks:15:in `<main>'

Let me know if I can provide any other info.

I actually hadn't merged the PR that fixes this yet. I now did, and released version 1.13.4. This should fix the problem. If not please re-open this issue.