Something like below should do the job. I believe currentTest object has the details of no of test cases which have passed, failed etc. currentTest object refer's to a test suite i.e a file containing different steps.You can add an if condition just for failing scenarios.
You need to add loggingPrefs property within your configuration as well for this to work.
var executingTestCaseName = browser.currentTest.module.substring(browser.currentTest.module.lastIndexOf("\/") + 1, browser.currentTest.module.length);
var seleniumLogPath = folderlogPath + "\/" + executingTestCaseName + "-selenium-driver.log";
var browserLogPath = folderlogPath + "\/" + executingTestCaseName + "-browser.log";
var log4js = require("log4js");
log4js.configure({
appenders: [
{ type: 'file', filename: seleniumLogPath, category: 'seleniumLogger', absolute: true, "layout": { "type": "messagePassThrough" } },
{ type: 'file', filename: browserLogPath, category: 'browserLogger', absolute: true, "layout": { "type": "messagePassThrough" } }
]
});
var seleniumLogger = log4js.getLogger("seleniumLogger");
browser.getLog('driver', function (logEntriesArray) {
console.log("LogEntriesArray.Length: " + logEntriesArray.length);
logEntriesArray.forEach(function (log) {
seleniumLogger.info(new Date(log.timestamp).toISOString() + '[' + log.level + '] ' + ' : ' + log.message);
});
});
var browserLogger = log4js.getLogger("browserLogger");
browser.getLog('browser', function (logEntriesArray) {
console.log("LogEntriesArray.Length: " + logEntriesArray.length);
logEntriesArray.forEach(function (log) {
browserLogger.info(new Date(log.timestamp).toISOString() + '[' + log.level + '] ' + ' : ' + log.message);
});
});
browser.end();