Search code examples
loggingjmxtrans

How to set log level for jmxtrans


I am running jmxtrans using command line with something like this:

java -Djmxtrans.log.level=10 -jar jmxtrans-249-SNAPSHOT-all.jar -e -f queues4.json -s 5

I have tried changing the following settings for log level:

-Djmxtrans.log.level=10
-Djmxtrans.log.level=0
-Djmxtrans.log.level=INFO
-Djmxtrans.log.level=ERROR

None of these seem to effect the STDOUT logs and it seems to be stuck at Debug level. Is there any way to change the log level? any reference to documentation will be helpful. I have looked at:

https://github.com/jmxtrans/jmxtrans/wiki/MoreExamples

but can't find a configuration to control logging.


Solution

  • For anyone ending up here after a google search: Log currently is broken in jmxtrans because of conflicting dependencies of slf4j,log4j and logback in jmxtrans.

    https://github.com/jmxtrans/jmxtrans/issues/215

    One way to fix this is to insert a logback.xml file into the root of the jmxtrans jar file:

    <property name="logs-folder" value="${catalina.base}/logs"/>
    
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${jmxtrans.log.dir}/jmxtrans.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>${jmxtrans.log.dir}/jmxtrans_%d{yyyy-MM-dd}.%i.log</fileNamePattern>
    
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- or whenever the file size reaches 300MB -->
                <maxFileSize>300MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!-- keep 30 days' worth of history -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%date %level [%thread] %logger{36} [%file:%line] %msg%n</pattern>
        </encoder>
    </appender>
    
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%date %-5level [%thread] %-36logger{36} [%file:%line][%method] %msg%n</Pattern>
        </layout>
    </appender>
    
    
    <logger name="com.googlecode.jmxtrans" level="${jmxtrans.log.level}"/>
    <logger name="org.quartz" level="WARN"/>
    
    <root level="DEBUG">
        <appender-ref ref="FILE"/>
        <appender-ref ref="STDOUT"/>
    </root>
    

    Note that I added a rolling policy to the log (You can remove it and use the Linux logrotate utility instead).