Your browser was unable to load all of the resources. They may have been blocked by your firewall, proxy or browser configuration.
Press Ctrl+F5 or Ctrl+Shift+R to have your browser try again.

Save step log in the file #2413

mtyde ·
I want to save step log of failed step to be written to file, which I can add to e-mail nottification from QB.

Function renderLogAsText(BuildLogEntry logEntry, java.lang.String lineSeparator, boolean showStep) inside Step class is returning null.

${groovy:  
logger.error("Post-Build")
import java.io.File
import com.pmease.quickbuild.log.BuildLogEntry
def MS2=build.getStep("master>PACKAGING WIN BLUE>COMPILATION WIN BLUE")
log_file1=new File("log_from_step.txt")
def MS2_msg = MS2.getErrorMessage()
logger.info("Message: "+MS2_msg)
BuildLogEntry stepLog2 = new BuildLogEntry()
def MS2_log=MS2.renderLogAsText(stepLog2, "\n", true)
log_file1.text=MS2_log
}


Error from QB is:
log_file1.text=MS2_log
at com.pmease.quickbuild.util.ExceptionUtils.wrapException(ExceptionUtils.java:87)
at com.pmease.quickbuild.DefaultScriptEngine.evaluate(DefaultScriptEngine.java:93)
at com.pmease.quickbuild.DefaultScriptEngine.interpolate(DefaultScriptEngine.java:104)
at com.pmease.quickbuild.model.Configuration.runPostBuildScript(Configuration.java:1346)
at sun.reflect.GeneratedMethodAccessor310.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:197)
at com.pmease.quickbuild.model.Configuration_$$_javassist_10.runPostBuildScript(Configuration_$$_javassist_10.java)
at com.pmease.quickbuild.DefaultBuildEngine.run(DefaultBuildEngine.java:582)
at com.pmease.quickbuild.DefaultBuildEngine.process(DefaultBuildEngine.java:360)
at com.pmease.quickbuild.DefaultBuildEngine.access$000(DefaultBuildEngine.java:121)
at com.pmease.quickbuild.DefaultBuildEngine$2.run(DefaultBuildEngine.java:944)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Caused by: com.pmease.quickbuild.QuickbuildException: java.lang.NullPointerException


What I am doing worng here?
Maybe there is another way of getting to step log text?
  • replies 9
  • views 3827
  • stars 1
robinshen ADMIN ·
Use below script to create a log file in workspace for each failed step:
groovy:
import com.pmease.quickbuild.log.BuildLog;
import com.pmease.quickbuild.stepsupport.CompositeStep;

for (step in build.steps) {
if (step.failed && !(step instanceof CompositeStep)) {
def stepLogIs = new BuildLog(build.id, step.path).getTextInputStream("\n", true);
try {
new File(configuration.workspaceDir, step.path.toString().replace('>', '_') + ".txt").text = stepLogIs.text;
} finally {
stepLogIs.close();
}
}
}
mtyde ·
Thanks Robin.

This script is doing exactly what I needed.
helybblake ·
So that is what I need... Thanks Rob!
zapped ·
<strike>Now this script creates an empty file.</strike>
According to this viewtopic.php?f=1&t=3450#p13089 configuration post execute script (not a master step)
QB v6.1.2
robinshen ADMIN ·
It works at my side. I am testing with a very simple build, just calling a simple "Faile me" step.
SuikaAsuke ·

I run this script on QB11 output an empty file
errrrrrrrr.png

robinshen ADMIN ·

It still works fine for QB11. Make sure you are running this as post-build script (can be configured in advanced setting of configuration)

SuikaAsuke ·

Configured in advanced setting of configuration is successful.
Can be configured in Post-Execute Action of Steps?I want to save step log of specified step.

robinshen ADMIN ·

Unfortunately this is not possible. Log can only be saved after build is finished and log has been collected.