I have to write Groovy script log in to a text file, I am able to write request and response of any Soap step using context.expand
.
To write test request and response I am using:
def request = context.expand('${SoapRequest#Request}')
new File ("D:/RequestFile.txt").write(request)
What I want is to save the log output in a file:
Suggest me a way to write Groovy script log in a text file.
Best Answer
Config way log4j.xml
There is already a file for Groovy log configured in SOAPUI log4j configuration file.
In SOAPUI_HOME\bin\soapui-log4j.xml:
A possible way is to add another custom
FileAppender
in this config file. If you change this file remember to restart SOAPUI in order that it can load the changes.Something like this can do the trick:
Dinamically using Groovy
However it seems that you want to do it dynamically using Groovy script, hence you can use the follow code to get
<logger name="groovy.log">
and add aFileAppender
to it; in order that you can save the logs in a custom file:NOTE: If you don't use an absolute path in
FileAppender
the log file is saved relative to *SOAPUI_HOME\bin*When you configure this the rest of logs in Groovy testSteps will be appended to this file. If you want to get only the log for a specific Groovy testStep then you can simply remove the appender at the end of the script:
UPDATE:
From you comment: I want to store output for each run, and if I am executing this again it should rewrite the file.
So you want to store output for each run... but you want to overwrite the file if you execute again? This is contradictory isn't?
If you want to overwrite the file instead of append the content you can use
setAppend(false)
: