Hi,
It was some time ago you wrote this question but since this seem to be a hot topic I want show my solution.
Actually, for me it worked by just creating an Event (TestRunListener.afterStep) and then add this code in that event.
def testStepStatus = testStepResult.getStatus()
def testStepName = context.testCase.getTestStepAt(context.getCurrentStepIndex()).getLabel()
//check if any test step has FAILED.
log.info(testStepName + " : " + " finished with the status " + testStepStatus + "\n")
This will give you an output like:
Wed Jul 04 14:32:24 CEST 2018: INFO: TestStep1: finished with the status PASS
Wed Jul 04 14:32:24 CEST 2018: INFO: TestStep2: finished with the status FAIL
Wed Jul 04 14:32:24 CEST 2018: INFO: TestStep3: finished with the status PASS
Note that his will not be run if you have the flag "Abort test if an error occurs" which is found on the TestCase level. Right-click on test case and select Options.
Also if you further want to use the test step status you will probably need to use .toString(). Example.
if(testStepStatus.toString() == "FAIL")
//do something