Escape function parameter before logging them
|Target version:||Current Sprint|
While reviewing some jobs, I stumbled over this line in the autoinst-log.txt:
[Thu Dec 14 04:10:45 2017] [12032:debug] <<< testapi::type_string(string='root ', max_interval=250, wait_screen_changes=0, wait_still_screen=0)
The line break after root in the logs is because the parameter of type_string is actually "root\n" in the code.
This is kind of obscure for reviewers that want to know what happened there.
- AC1: Control characters within command strings within os-autoinst are not evaluated by the logging mechanism
IMHO it would be better if the parameter from type_string gets escaped before printing it to the log so it would show up as this:
[Thu Dec 14 04:10:45 2017] [12032:debug] <<< testapi::type_string(string='root\n', max_interval=250, wait_screen_changes=0, wait_still_screen=0)
This is especially beneficial if the string only consists of one control character (e.g. type_string('\t')).
#2 Updated by nicksinger about 2 years ago
artificial line-breaks for readability could always be introduced. Even though I think it's not the job of a log to look pretty but to deliver relevant information fast and understandable.
Does the current logging-code only print "\n" un-escaped? If so, I'd close this ticket again - one can guess line-breaks.
Created PR https://github.com/os-autoinst/os-autoinst/pull/1322 - Escape parameters in log calls
I added the option Useqq to the Data::Dumper call.
Values will now show with double quotes and all unprintable characters will be escaped.
There are still other things not escaped, for example this:
[2019-12-12T12:50:38.049 UTC] [debug] <<< distribution::script_output(Content of /tmp/scriptXXX.sh : "cat > /tmp/scriptXXX.sh << 'EOT_XXX'; echo XXX-$?-" =undef)
This might actually be a problem of how log_call is called (with just one argument).
What should happen with those calls?
- Status changed from In Progress to Feedback
PR https://github.com/os-autoinst/os-autoinst/pull/1322 was merged