Reducing log level for the LogViewer


#1

Hi. I just started playing with Katalon and so far enjoying the product. In my test, I am comparing UI table with some DB data and, as you would imagine, it involves some loops and some conditions for each cell. It appears that every statement is being logged to the LogViewer so a LOT of time is being spent updating the LogViewer UI tree. Please let me know if there is a way to stop logging every single statement and function call to the log viewer. Is there a way to be more selective (log levels, test entry/exit only, etc). Thanks


#2

You can reduce what you see by changing the view to show Failed or Error messages by clicking the Tree View icon, next to the Scroll Lock icon.
However, all the commands are still written to the Console and end up in the Report folder after the test suites are completed.


#3

Upvoted. The logs are a mess.


#4

It’s been suggested and upvoted and ticketed by Liam… I guess we need more votes?


#5

Upvoted!


#6

Upvote too. Our CI server has 30 GB of logs in about a month of testing. Would like to be able to filter the writes to the console.


#7

Upvote too.

One of my colleague wants to take screenshots of 5000 URLs. Obviously it takes long long time. I want to do every possible improvements to make my test cases run faster.

Of course we will introduce “Parallel execution of test suites”.

And I noticed that logging verbose DEBUG messages is slowing down every single line of test case script. For example, please find massive lines of DEBUG messages in the Console as follows:

SLF4J: The requested version 1.7.16 by your slf4j binding is not compatible with [1.6]
SLF4J: See http://www.slf4j.org/codes.html#version_mismatch for further details.
2018-12-21 11:28:25.853 e[34mINFO e[0;39m e[36mc.k.katalon.core.main.TestCaseExecutor   -e[0;39m e[39m--------------------e[0;39m
2018-12-21 11:28:25.857 e[34mINFO e[0;39m e[36mc.k.katalon.core.main.TestCaseExecutor   -e[0;39m e[39mSTART Test Cases/TestObjectTransformerTeste[0;39m
2018-12-21 11:28:26.984 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: source = findTestObject("Object Repository/Page_15801_testbed/button_foo")e[0;39m
2018-12-21 11:28:27.133 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m2: assert source != nulle[0;39m
2018-12-21 11:28:27.139 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m3: println(source is $this.format(source))e[0;39m
2018-12-21 11:28:27.169 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: sb = new java.lang.StringBuilder()e[0;39m
2018-12-21 11:28:27.190 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m2: sb.append("{")e[0;39m
2018-12-21 11:28:27.195 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m3: sb.append(""objectId":"")e[0;39m
2018-12-21 11:28:27.200 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m4: sb.append(to.getObjectId())e[0;39m
2018-12-21 11:28:27.224 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m5: sb.append(""")e[0;39m
2018-12-21 11:28:27.234 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m6: if (getProperties().size() > 0)e[0;39m
2018-12-21 11:28:27.240 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: sb.append(",")e[0;39m
2018-12-21 11:28:27.242 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m2: sb.append("[")e[0;39m
2018-12-21 11:28:27.246 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m3: count = 0e[0;39m
2018-12-21 11:28:27.248 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m4: for (com.kms.katalon.core.testobject.TestObjectProperty top : to.getProperties())e[0;39m
2018-12-21 11:28:27.252 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: if (activeOnly == false || activeOnly == true && top.isActive())e[0;39m
2018-12-21 11:28:27.266 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: if (count > 0)e[0;39m
2018-12-21 11:28:27.269 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m2: sb.append("{")e[0;39m
2018-12-21 11:28:27.273 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m3: sb.append(""name":"")e[0;39m
2018-12-21 11:28:27.274 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m4: sb.append(top.getName())e[0;39m
2018-12-21 11:28:27.281 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m5: sb.append(""")e[0;39m
2018-12-21 11:28:27.283 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m6: sb.append(",")e[0;39m
2018-12-21 11:28:27.284 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m7: sb.append(""conditionType":"")e[0;39m
2018-12-21 11:28:27.295 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m8: sb.append(getCondition().toString())e[0;39m
2018-12-21 11:28:27.311 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m9: sb.append(""")e[0;39m
2018-12-21 11:28:27.313 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m10: sb.append(",")e[0;39m
2018-12-21 11:28:27.316 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m11: sb.append(""value"]":"")e[0;39m
2018-12-21 11:28:27.319 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m12: sb.append(top.getValue())e[0;39m
2018-12-21 11:28:27.328 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m13: sb.append(""")e[0;39m
2018-12-21 11:28:27.332 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m14: sb.append(",")e[0;39m
2018-12-21 11:28:27.334 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m15: sb.append(""isActive":"")e[0;39m
2018-12-21 11:28:27.338 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m16: sb.append(top.isActive())e[0;39m
2018-12-21 11:28:27.349 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m17: sb.append(""")e[0;39m
2018-12-21 11:28:27.352 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m18: sb.append("}")e[0;39m
2018-12-21 11:28:27.354 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m19: count += 1e[0;39m
2018-12-21 11:28:27.355 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: if (activeOnly == false || activeOnly == true && top.isActive())e[0;39m
2018-12-21 11:28:27.357 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: if (count > 0)e[0;39m
2018-12-21 11:28:27.357 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: sb.append(",")e[0;39m
2018-12-21 11:28:27.358 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m2: sb.append("{")e[0;39m
2018-12-21 11:28:27.359 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m3: sb.append(""name":"")e[0;39m
2018-12-21 11:28:27.360 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m4: sb.append(top.getName())e[0;39m
2018-12-21 11:28:27.361 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m5: sb.append(""")e[0;39m
2018-12-21 11:28:27.662 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m6: sb.append(",")e[0;39m
2018-12-21 11:28:27.664 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m7: sb.append(""conditionType":"")e[0;39m
2018-12-21 11:28:27.665 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m8: sb.append(getCondition().toString())e[0;39m
2018-12-21 11:28:27.666 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m9: sb.append(""")e[0;39m
2018-12-21 11:28:27.667 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m10: sb.append(",")e[0;39m
2018-12-21 11:28:27.668 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m11: sb.append(""value"]":"")e[0;39m
2018-12-21 11:28:27.670 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m12: sb.append(top.getValue())e[0;39m
2018-12-21 11:28:27.671 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m13: sb.append(""")e[0;39m
2018-12-21 11:28:27.672 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m14: sb.append(",")e[0;39m
2018-12-21 11:28:27.673 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m15: sb.append(""isActive":"")e[0;39m
2018-12-21 11:28:27.674 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m16: sb.append(top.isActive())e[0;39m
2018-12-21 11:28:27.675 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m17: sb.append(""")e[0;39m
2018-12-21 11:28:28.016 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m18: sb.append("}")e[0;39m
2018-12-21 11:28:28.017 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m19: count += 1e[0;39m
2018-12-21 11:28:28.018 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: if (activeOnly == false || activeOnly == true && top.isActive())e[0;39m
2018-12-21 11:28:28.019 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: if (count > 0)e[0;39m
2018-12-21 11:28:28.020 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: sb.append(",")e[0;39m
2018-12-21 11:28:28.021 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m2: sb.append("{")e[0;39m
2018-12-21 11:28:28.022 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m3: sb.append(""name":"")e[0;39m
2018-12-21 11:28:28.023 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m4: sb.append(top.getName())e[0;39m
2018-12-21 11:28:28.024 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m5: sb.append(""")e[0;39m
2018-12-21 11:28:28.025 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m6: sb.append(",")e[0;39m
2018-12-21 11:28:28.371 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m7: sb.append(""conditionType":"")e[0;39m
2018-12-21 11:28:28.373 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m8: sb.append(getCondition().toString())e[0;39m
2018-12-21 11:28:28.373 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m9: sb.append(""")e[0;39m
2018-12-21 11:28:28.374 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m10: sb.append(",")e[0;39m
2018-12-21 11:28:28.375 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m11: sb.append(""value"]":"")e[0;39m
2018-12-21 11:28:28.375 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m12: sb.append(top.getValue())e[0;39m
2018-12-21 11:28:28.376 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m13: sb.append(""")e[0;39m
2018-12-21 11:28:28.376 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m14: sb.append(",")e[0;39m
2018-12-21 11:28:28.377 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m15: sb.append(""isActive":"")e[0;39m
2018-12-21 11:28:28.377 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m16: sb.append(top.isActive())e[0;39m
2018-12-21 11:28:28.765 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m17: sb.append(""")e[0;39m
2018-12-21 11:28:28.767 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m18: sb.append("}")e[0;39m
2018-12-21 11:28:28.767 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m19: count += 1e[0;39m
2018-12-21 11:28:28.768 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: if (activeOnly == false || activeOnly == true && top.isActive())e[0;39m
2018-12-21 11:28:28.768 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: if (count > 0)e[0;39m
2018-12-21 11:28:28.769 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: sb.append(",")e[0;39m
2018-12-21 11:28:28.769 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m2: sb.append("{")e[0;39m
2018-12-21 11:28:28.770 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m3: sb.append(""name":"")e[0;39m
2018-12-21 11:28:28.770 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m4: sb.append(top.getName())e[0;39m
2018-12-21 11:28:28.771 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m5: sb.append(""")e[0;39m
2018-12-21 11:28:29.112 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m6: sb.append(",")e[0;39m
2018-12-21 11:28:29.113 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m7: sb.append(""conditionType":"")e[0;39m
2018-12-21 11:28:29.116 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m8: sb.append(getCondition().toString())e[0;39m
2018-12-21 11:28:29.117 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m9: sb.append(""")e[0;39m
2018-12-21 11:28:29.118 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m10: sb.append(",")e[0;39m
2018-12-21 11:28:29.119 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m11: sb.append(""value"]":"")e[0;39m
2018-12-21 11:28:29.120 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m12: sb.append(top.getValue())e[0;39m
2018-12-21 11:28:29.120 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m13: sb.append(""")e[0;39m
2018-12-21 11:28:29.124 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m14: sb.append(",")e[0;39m
2018-12-21 11:28:29.126 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m15: sb.append(""isActive":"")e[0;39m
2018-12-21 11:28:29.520 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m16: sb.append(top.isActive())e[0;39m
2018-12-21 11:28:29.521 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m17: sb.append(""")e[0;39m
2018-12-21 11:28:29.522 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m18: sb.append("}")e[0;39m
2018-12-21 11:28:29.522 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m19: count += 1e[0;39m
2018-12-21 11:28:29.523 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: if (activeOnly == false || activeOnly == true && top.isActive())e[0;39m
2018-12-21 11:28:29.524 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m5: sb.append("]")e[0;39m
2018-12-21 11:28:29.525 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m7: sb.append("}")e[0;39m
2018-12-21 11:28:29.526 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m8: return sb.toString()e[0;39m
source is {"objectId":"Object Repository/Page_15801_testbed/button_foo",[{"name":"tag","conditionType":"equals","value"]":"button","isActive":"true"},{"name":"type","conditionType":"equals","value"]":"button","isActive":"true"},{"name":"id","conditionType":"equals","value"]":"staticId1:dynamicId:staticId2","isActive":"true"},{"name":"text","conditionType":"equals","value"]":"foo","isActive":"true"}]}
2018-12-21 11:28:29.534 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m4: target = my.TestObjectTransformer.toMyFavoritesXPath(source, OPTIONAL)e[0;39m
2018-12-21 11:28:29.889 e[31mWARN e[0;39m e[36mc.k.katalon.core.logging.KeywordLogger   -e[0;39m e[39mPlease use "KeywordUtil.logInfo()" instead of "new KeywordLogger()" constructor. "KeywordLogger" is an internal API and might be changed in the future.e[0;39m
2018-12-21 11:28:29.894 e[34mINFO e[0;39m e[36mk.k.c.m.CustomKeywordDelegatingMetaClass -e[0;39m e[39mmy.TestObjectTransformer.toMyFavoritesXPath is PASSEDe[0;39m
2018-12-21 11:28:29.894 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m5: assert target != nulle[0;39m
2018-12-21 11:28:29.895 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m6: println(target is $this.format(target))e[0;39m
2018-12-21 11:28:29.896 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: sb = new java.lang.StringBuilder()e[0;39m
2018-12-21 11:28:29.897 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m2: sb.append("{")e[0;39m
2018-12-21 11:28:29.897 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m3: sb.append(""objectId":"")e[0;39m
2018-12-21 11:28:29.898 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m4: sb.append(to.getObjectId())e[0;39m
2018-12-21 11:28:29.898 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m5: sb.append(""")e[0;39m
2018-12-21 11:28:29.899 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m6: if (getProperties().size() > 0)e[0;39m
2018-12-21 11:28:29.899 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: sb.append(",")e[0;39m
2018-12-21 11:28:29.899 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m2: sb.append("[")e[0;39m
2018-12-21 11:28:30.298 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m3: count = 0e[0;39m
2018-12-21 11:28:30.299 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m4: for (com.kms.katalon.core.testobject.TestObjectProperty top : to.getProperties())e[0;39m
2018-12-21 11:28:30.300 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: if (activeOnly == false || activeOnly == true && top.isActive())e[0;39m
2018-12-21 11:28:30.301 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: if (count > 0)e[0;39m
2018-12-21 11:28:30.301 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m2: sb.append("{")e[0;39m
2018-12-21 11:28:30.301 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m3: sb.append(""name":"")e[0;39m
2018-12-21 11:28:30.302 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m4: sb.append(top.getName())e[0;39m
2018-12-21 11:28:30.302 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m5: sb.append(""")e[0;39m
2018-12-21 11:28:30.303 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m6: sb.append(",")e[0;39m
2018-12-21 11:28:30.303 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m7: sb.append(""conditionType":"")e[0;39m
2018-12-21 11:28:30.304 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m8: sb.append(getCondition().toString())e[0;39m
2018-12-21 11:28:30.662 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m9: sb.append(""")e[0;39m
2018-12-21 11:28:30.663 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m10: sb.append(",")e[0;39m
2018-12-21 11:28:30.663 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m11: sb.append(""value"]":"")e[0;39m
2018-12-21 11:28:30.664 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m12: sb.append(top.getValue())e[0;39m
2018-12-21 11:28:30.664 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m13: sb.append(""")e[0;39m
2018-12-21 11:28:30.665 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m14: sb.append(",")e[0;39m
2018-12-21 11:28:30.665 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m15: sb.append(""isActive":"")e[0;39m
2018-12-21 11:28:30.666 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m16: sb.append(top.isActive())e[0;39m
2018-12-21 11:28:30.666 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m17: sb.append(""")e[0;39m
2018-12-21 11:28:30.667 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m18: sb.append("}")e[0;39m
2018-12-21 11:28:31.056 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m19: count += 1e[0;39m
2018-12-21 11:28:31.057 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: if (activeOnly == false || activeOnly == true && top.isActive())e[0;39m
2018-12-21 11:28:31.057 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: if (count > 0)e[0;39m
2018-12-21 11:28:31.058 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: sb.append(",")e[0;39m
2018-12-21 11:28:31.059 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m2: sb.append("{")e[0;39m
2018-12-21 11:28:31.060 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m3: sb.append(""name":"")e[0;39m
2018-12-21 11:28:31.061 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m4: sb.append(top.getName())e[0;39m
2018-12-21 11:28:31.061 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m5: sb.append(""")e[0;39m
2018-12-21 11:28:31.061 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m6: sb.append(",")e[0;39m
2018-12-21 11:28:31.062 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m7: sb.append(""conditionType":"")e[0;39m
2018-12-21 11:28:31.396 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m8: sb.append(getCondition().toString())e[0;39m
2018-12-21 11:28:31.397 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m9: sb.append(""")e[0;39m
2018-12-21 11:28:31.398 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m10: sb.append(",")e[0;39m
2018-12-21 11:28:31.399 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m11: sb.append(""value"]":"")e[0;39m
2018-12-21 11:28:31.400 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m12: sb.append(top.getValue())e[0;39m
2018-12-21 11:28:31.400 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m13: sb.append(""")e[0;39m
2018-12-21 11:28:31.401 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m14: sb.append(",")e[0;39m
2018-12-21 11:28:31.401 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m15: sb.append(""isActive":"")e[0;39m
2018-12-21 11:28:31.402 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m16: sb.append(top.isActive())e[0;39m
2018-12-21 11:28:31.402 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m17: sb.append(""")e[0;39m
2018-12-21 11:28:31.403 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m18: sb.append("}")e[0;39m
2018-12-21 11:28:31.743 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m19: count += 1e[0;39m
2018-12-21 11:28:31.743 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: if (activeOnly == false || activeOnly == true && top.isActive())e[0;39m
2018-12-21 11:28:31.744 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: if (count > 0)e[0;39m
2018-12-21 11:28:31.744 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: sb.append(",")e[0;39m
2018-12-21 11:28:31.745 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m2: sb.append("{")e[0;39m
2018-12-21 11:28:31.745 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m3: sb.append(""name":"")e[0;39m
2018-12-21 11:28:31.746 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m4: sb.append(top.getName())e[0;39m
2018-12-21 11:28:31.746 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m5: sb.append(""")e[0;39m
2018-12-21 11:28:31.747 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m6: sb.append(",")e[0;39m
2018-12-21 11:28:31.747 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m7: sb.append(""conditionType":"")e[0;39m
2018-12-21 11:28:32.101 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m8: sb.append(getCondition().toString())e[0;39m
2018-12-21 11:28:32.102 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m9: sb.append(""")e[0;39m
2018-12-21 11:28:32.102 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m10: sb.append(",")e[0;39m
2018-12-21 11:28:32.102 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m11: sb.append(""value"]":"")e[0;39m
2018-12-21 11:28:32.103 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m12: sb.append(top.getValue())e[0;39m
2018-12-21 11:28:32.103 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m13: sb.append(""")e[0;39m
2018-12-21 11:28:32.104 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m14: sb.append(",")e[0;39m
2018-12-21 11:28:32.104 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m15: sb.append(""isActive":"")e[0;39m
2018-12-21 11:28:32.104 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m16: sb.append(top.isActive())e[0;39m
2018-12-21 11:28:32.488 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m17: sb.append(""")e[0;39m
2018-12-21 11:28:32.489 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m18: sb.append("}")e[0;39m
2018-12-21 11:28:32.490 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m19: count += 1e[0;39m
2018-12-21 11:28:32.490 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: if (activeOnly == false || activeOnly == true && top.isActive())e[0;39m
2018-12-21 11:28:32.496 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: if (count > 0)e[0;39m
2018-12-21 11:28:32.496 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: sb.append(",")e[0;39m
2018-12-21 11:28:32.496 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m2: sb.append("{")e[0;39m
2018-12-21 11:28:32.499 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m3: sb.append(""name":"")e[0;39m
2018-12-21 11:28:32.499 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m4: sb.append(top.getName())e[0;39m
2018-12-21 11:28:32.499 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m5: sb.append(""")e[0;39m
2018-12-21 11:28:32.504 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m6: sb.append(",")e[0;39m
2018-12-21 11:28:32.863 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m7: sb.append(""conditionType":"")e[0;39m
2018-12-21 11:28:32.865 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m8: sb.append(getCondition().toString())e[0;39m
2018-12-21 11:28:32.866 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m9: sb.append(""")e[0;39m
2018-12-21 11:28:32.866 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m10: sb.append(",")e[0;39m
2018-12-21 11:28:32.867 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m11: sb.append(""value"]":"")e[0;39m
2018-12-21 11:28:32.867 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m12: sb.append(top.getValue())e[0;39m
2018-12-21 11:28:32.867 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m13: sb.append(""")e[0;39m
2018-12-21 11:28:32.868 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m14: sb.append(",")e[0;39m
2018-12-21 11:28:32.868 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m15: sb.append(""isActive":"")e[0;39m
2018-12-21 11:28:32.869 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m16: sb.append(top.isActive())e[0;39m
2018-12-21 11:28:33.295 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m17: sb.append(""")e[0;39m
2018-12-21 11:28:33.295 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m18: sb.append("}")e[0;39m
2018-12-21 11:28:33.296 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m19: count += 1e[0;39m
2018-12-21 11:28:33.296 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m1: if (activeOnly == false || activeOnly == true && top.isActive())e[0;39m
2018-12-21 11:28:33.297 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m5: sb.append("]")e[0;39m
2018-12-21 11:28:33.297 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m7: sb.append("}")e[0;39m
2018-12-21 11:28:33.298 e[39mDEBUGe[0;39m e[36mtestcase.TestObjectTransformerTest       -e[0;39m e[39m8: return sb.toString()e[0;39m
target is {"objectId":"Object Repository/Page_15801_testbed/button_foo",[{"name":"tag","conditionType":"equals","value"]":"button","isActive":"true"},{"name":"type","conditionType":"equals","value"]":"button","isActive":"true"},{"name":"id","conditionType":"equals","value"]":"staticId1:dynamicId:staticId2","isActive":"true"},{"name":"text","conditionType":"equals","value"]":"foo","isActive":"true"}]}
2018-12-21 11:28:33.299 e[34mINFO e[0;39m e[36mc.k.katalon.core.main.TestCaseExecutor   -e[0;39m e[39mEND Test Cases/TestObjectTransformerTest

I want to free my test cases from burden of DEBUG logging in order to let them be light-weighted and run faster.


#8

I found a thing.

In my katalon studio project on verion 5.10.0, I edited Include/config/log.properties as follows:

logging.level.testcase=INFO

then I ran the same test case above and got the following output in the Console:

SLF4J: The requested version 1.7.16 by your slf4j binding is not compatible with [1.6]
SLF4J: See http://www.slf4j.org/codes.html#version_mismatch for further details.
2018-12-21 12:59:03.136 e[34mINFO e[0;39m e[36mc.k.katalon.core.main.TestCaseExecutor   -e[0;39m e[39m--------------------e[0;39m
2018-12-21 12:59:03.139 e[34mINFO e[0;39m e[36mc.k.katalon.core.main.TestCaseExecutor   -e[0;39m e[39mSTART Test Cases/TestObjectTransformerTeste[0;39m
source is {"objectId":"Object Repository/Page_15801_testbed/button_foo",[{"name":"tag","conditionType":"equals","value":"button","isActive":"true"},{"name":"type","conditionType":"equals","value":"button","isActive":"true"},{"name":"id","conditionType":"equals","value":"staticId1:dynamicId:staticId2","isActive":"true"},{"name":"text","conditionType":"equals","value":"foo","isActive":"true"}]}
2018-12-21 12:59:05.442 e[31mWARN e[0;39m e[36mc.k.katalon.core.logging.KeywordLogger   -e[0;39m e[39mPlease use "KeywordUtil.logInfo()" instead of "new KeywordLogger()" constructor. "KeywordLogger" is an internal API and might be changed in the future.e[0;39m
2018-12-21 12:59:05.448 e[34mINFO e[0;39m e[36mk.k.c.m.CustomKeywordDelegatingMetaClass -e[0;39m e[39mmy.TestObjectTransformer.toMyFavoritesXPath is PASSEDe[0;39m
target is {"objectId":"Object Repository/Page_15801_testbed/button_foo",[{"name":"tag","conditionType":"equals","value":"button","isActive":"true"},{"name":"type","conditionType":"equals","value":"button","isActive":"true"},{"name":"id","conditionType":"equals","value":"staticId1:dynamicId:staticId2","isActive":"true"},{"name":"text","conditionType":"equals","value":"foo","isActive":"true"}]}
2018-12-21 12:59:06.894 e[34mINFO e[0;39m e[36mc.k.katalon.core.main.TestCaseExecutor   -e[0;39m e[39mEND Test Cases/TestObjectTransformerTeste[0;39m

The number of lines were drastically reduced. The test case ran far quicker.

log.properties seconds
empty 12
With “logging.level.testcase=INFO” 6

Wow!


#9

In the Katalon document:

Log level = DEBUG and TRACE are mentioned in the description. But It does not mention that we can set other (higher) log level such as INFO.

It seems that the writer who wrote the current description was interested only in making the log MORE verbose. He/she forgot to mention that we can make the log LESS verbose by log.properties. The document should cover both interests.


Additional finding:

In my katalon project on version 5.10.0, I got the following Console output:

SLF4J: The requested version 1.7.16 by your slf4j binding is not compatible with [1.6]
SLF4J: See http://www.slf4j.org/codes.html#version_mismatch for further details.
2018-12-21 13:51:32.396 e[34mINFO e[0;39m e[36mc.k.katalon.core.main.TestCaseExecutor   -e[0;39m e[39m--------------------e[0;39m
2018-12-21 13:51:32.400 e[34mINFO e[0;39m e[36mc.k.katalon.core.main.TestCaseExecutor   -e[0;39m e[39mSTART Test Cases/TestObjectTransformerTeste[0;39m
source is {"objectId":"Object Repository/Page_15801_testbed/button_foo",[{"name":"tag","conditionType":"equals","value":"button","isActive":"true"},{"name":"type","conditionType":"equals","value":"button","isActive":"true"},{"name":"id","conditionType":"equals","value":"staticId1:dynamicId:staticId2","isActive":"true"},{"name":"text","conditionType":"equals","value":"foo","isActive":"true"}]}
2018-12-21 13:51:34.396 e[31mWARN e[0;39m e[36mc.k.katalon.core.logging.KeywordLogger   -e[0;39m e[39mPlease use "KeywordUtil.logInfo()" instead of "new KeywordLogger()" constructor. "KeywordLogger" is an internal API and might be changed in the future.e[0;39m
2018-12-21 13:51:34.410 e[34mINFO e[0;39m e[36mk.k.c.m.CustomKeywordDelegatingMetaClass -e[0;39m e[39mmy.TestObjectTransformer.toMyFavoritesXPath is PASSEDe[0;39m
target is {"objectId":"Object Repository/Page_15801_testbed/button_foo",[{"name":"tag","conditionType":"equals","value":"button","isActive":"true"},{"name":"type","conditionType":"equals","value":"button","isActive":"true"},{"name":"id","conditionType":"equals","value":"staticId1:dynamicId:staticId2","isActive":"true"},{"name":"text","conditionType":"equals","value":"foo","isActive":"true"}]}
2018-12-21 13:51:36.047 e[34mINFO e[0;39m e[36mc.k.katalon.core.main.TestCaseExecutor   -e[0;39m e[39mEND Test Cases/TestObjectTransformerTest

The number of lines are smaller than the case logging.level.testcase=DEBUG.

But in the Log View, I found a lot of actions are logged:

It seems that every single line of test cases are actually logged by Katalon Studio, while the output lines to the Console are filtered based on the log level specified in the log.properties.

This is not what I want. I would like the verbose logging of test case are skipped so that CPU usage are minimized and processing time reduced.


#10

What a great find! This has drastically improved performance on one of my scripts that has tons of steps. My next question is if there is any way to reduce the level for the actual execution logs like you have for the console? The XML execution log has every little step and I’d like to clean that up as well.

Currently I’m using find & replace within Notepad++ via regex. It removes everything besides message / info logs that start with " *** ". If I could eliminate that process then I could really get this thing top notch.

(^(?!..+</message>).\n*|(.(?!***).</message>)\n*)

Any help is appreciated,

Tyler P.


#11

I’m curious - why did you want to reduce the amount of logs in XML reports?


#12

I’m running a test that does a lot of item price comparisons. Once the test is complete it leaves behind which items did not match, I then clean the XML log and send that to those that need it as a report for them in order to fix those discrepancies.

So I end up sending this for example:


#13

I found the spot where to change this. Within the Katalon Studio installation folder… configuration\org.eclipse.osg\65\0\.cp\resources\logback\logback.xml

The logback.xml file holds all of the various levels for the XML logs! Mission complete :smile:


#14

Nice catch!

Looks like any logger listed there can be overridden in the log.properties file.

e.g, default level for com.kms.katalon.core.util.KeywordUtil is trace which will show such message in console:

DEBUG com.kms.katalon.core.util.KeywordUtil ✓ Valid schema

Same for DEBUG level. But with INFO level the above message is suppressed.

So … we can play also at the project level!


#15

log viewer is fine for me. but using those findings to reduce console noise is worth it :slight_smile:

i have to find a way to get rid of the colors and escape codes too … are realy anoying if one may want to copy-paste a log


#16

upvote to this, please


#17

Manually editting configuration\org.eclipse.osg\65\0.cp\resources\logback\logback.xml is not a good idea.

Please have a look at this: