Log4j issues (duplicate console output and errors)
Hi,
we are launching our SoapUI projects from Jenkins and retrieve the testrunner console output as logs on the Jenkins master.
As we want colored logs (which are not supported in log4j 1.x coming with SoapUI) we are using the MulticolorLayout class from the com.jcabi.log package.
The problem is I cannot manage to mute the default logger and therefore get each line twice in my console output (one time colored, one time uncolored). And on top of it I see initial errors that indicate a concurrent log4j configuration.
[...]
C:\Program Files\SmartBear\ReadyAPI-1.2.2\bin>testrunner.bat -r -t "C:\Users\Administrator\soapui-settings.xml" "C:\Jenkins-dummy-soapui-project.xml" log4j:ERROR No appender named [CONSOLE] could be found. log4j:WARN No appenders could be found for logger (com.netflix.governator.lifecycle.ClasspathScanner). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. Configuring log4j from [C:\dataset\soapui-log4j-CI.xml]
[...]
11:08:01,591 INFO [SoapUIProTestCaseRunner] running step [Log color checks]
11:08:01,693 INFO [groovy.log] ============= Log color checks ==============
11:08:01,693 INFO [log] ============= Log color checks ==============
11:08:01,694 INFO [groovy.log] The following log messages should be colored
11:08:01,694 INFO [log] The following log messages should be colored
11:08:01,696 INFO [groovy.log]
11:08:01,696 INFO [log]
11:08:01,698 DEBUG [groovy.log] This is a DEBUG message.
11:08:01,698 DEBUG [log] This is a DEBUG message.
11:08:01,702 WARN [groovy.log] This is a WARNING message.
11:08:01,702 WARN [log] This is a WARNING message.
11:08:01,705 ERROR [groovy.log] This is an ERROR message.
11:08:01,705 ERROR [log] This is an ERROR message.
11:08:01,708 FATAL [groovy.log] This is a FATAL error message.
11:08:01,708 FATAL [log] This is a FATAL error message.
[...]
In testrunner.bat I point to my custom soapui-log4j.xml file, which is obviously taken into account (as there is colored log output).
[...]
set JAVA_OPTS=%JAVA_OPTS% -Dsoapui.log4j.config="C:\dataset\soapui-log4j-CI.xml"
[...]
However, there must be still some default logger which is not under control of my custom log4j configuration file (soapui-log4j-CI.xml) in which I removed all loggers and appenders except groovy.log and the root logger.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <!-- ===================================================================== --> <!-- --> <!-- This is an example of a Log4j XML configuration file. --> <!-- --> <!-- ===================================================================== --> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> <!-- =================== --> <!-- Appenders --> <!-- =================== --> <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/> <param name="Target" value="System.out"/> <param name="Threshold" value="DEBUG"/> <layout class="com.jcabi.log.MulticolorLayout"> <param name="ConversionPattern" value="%d{ABSOLUTE} %color{%-5p [%c] %m%n}" /> <param name="Levels" value="DEBUG:0;37,INFO:0;34,WARN:1;43,ERROR:37;41,FATAL:37;40" /> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="levelMin" value="DEBUG" /> <param name="levelMax" value="FATAL" /> </filter> </appender> <appender name="FILE" class="org.apache.log4j.RollingFileAppender"> <errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/> <param name="File" value="soapui-CI.log"/> <param name="Threshold" value="INFO"/> <param name="Append" value="false"/> <param name="MaxFileSize" value="5000KB"/> <param name="MaxBackupIndex" value="50"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n"/> </layout> </appender> <!-- =============== --> <!-- Loggers --> <!-- =============== --> <logger name="groovy.log"> <level value="DEBUG"/> <appender-ref ref="CONSOLE"/> </logger> <root> <priority value="INFO" /> <appender-ref ref="FILE"/> </root> </log4j:configuration>
What am I missing here?
Thanks for your help!
--Peter