diff --git a/README.md b/README.md index fb6a7e3..ab3748f 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,8 @@ This lib can also get the metrics from MBean Platform instead of jolokia. In ord - The parameters names and functions are exactly as described in Environment Variables section. (Except no need to specify JOLOKIA_URL of course) - The javaagent.jar is an "Uber-Jar" that shades all of its dependencies inside, to prevent class collisions - For example: java -javaagent:jmx2graphite.jar=GRAPHITE_HOSTNAME=graphite.example.com,SERVICE_NAME=PROD.MyAwesomeCategory example.jar - +- To configure Log Level add the configuration LOG_LEVEL=[any of OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACE, ALL] + # How to expose JMX Metrics using Jolokia Agent diff --git a/pom.xml b/pom.xml index 726e211..e9b7b42 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 io.logz jmx2graphite - 1.3.1 + 1.3.2 diff --git a/src/main/java/io/logz/jmx2graphite/Jmx2Graphite.java b/src/main/java/io/logz/jmx2graphite/Jmx2Graphite.java index 15afb08..06ea6e2 100644 --- a/src/main/java/io/logz/jmx2graphite/Jmx2Graphite.java +++ b/src/main/java/io/logz/jmx2graphite/Jmx2Graphite.java @@ -1,6 +1,11 @@ package io.logz.jmx2graphite; import com.google.common.util.concurrent.ThreadFactoryBuilder; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,6 +46,8 @@ public Jmx2Graphite(Jmx2GraphiteConfiguration conf) { else { throw new IllegalConfiguration("Unsupported client type: " + conf.getMetricClientType()); } + + configureLogLevel(conf.getLogLevel()); } public void run() { @@ -93,4 +100,12 @@ public void run() { } } } + + private void configureLogLevel (String level) { + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.valueOf(level)); + ctx.updateLoggers(); + } } diff --git a/src/main/java/io/logz/jmx2graphite/Jmx2GraphiteConfiguration.java b/src/main/java/io/logz/jmx2graphite/Jmx2GraphiteConfiguration.java index 5c71cb2..f9235b8 100644 --- a/src/main/java/io/logz/jmx2graphite/Jmx2GraphiteConfiguration.java +++ b/src/main/java/io/logz/jmx2graphite/Jmx2GraphiteConfiguration.java @@ -7,6 +7,7 @@ import java.net.URL; import java.net.UnknownHostException; import java.util.concurrent.TimeUnit; +import java.util.logging.Level; /** * @author amesika @@ -33,6 +34,8 @@ public class Jmx2GraphiteConfiguration { private MetricClientType metricClientType; private GraphiteProtocol graphiteProtocol; + private String logLevel; + public GraphiteProtocol getGraphiteProtocol() { return graphiteProtocol; } @@ -101,6 +104,12 @@ else if (config.hasPath("service.poller.mbean-direct")) { } else { graphiteWriteTimeoutMs = Math.round(0.7f * TimeUnit.SECONDS.toMillis(metricsPollingIntervalInSeconds)); } + + if(config.hasPath("log.level")) { + logLevel = config.getString("log.level"); + } else { + logLevel = Level.INFO.getName(); + } } private GraphiteProtocol getGraphiteProtocol(Config config) { @@ -191,4 +200,12 @@ public int getGraphiteSocketTimeout() { public int getGraphiteWriteTimeoutMs() { return graphiteWriteTimeoutMs; } + + public String getLogLevel() { + return logLevel; + } + + public void setLogLevel(String logLevel) { + this.logLevel = logLevel; + } } diff --git a/src/main/java/io/logz/jmx2graphite/Jmx2GraphiteJavaAgent.java b/src/main/java/io/logz/jmx2graphite/Jmx2GraphiteJavaAgent.java index 78233ab..ec3623f 100644 --- a/src/main/java/io/logz/jmx2graphite/Jmx2GraphiteJavaAgent.java +++ b/src/main/java/io/logz/jmx2graphite/Jmx2GraphiteJavaAgent.java @@ -89,6 +89,8 @@ private static String getArgumentConfigurationRepresentation(String key) throws return "graphite.writeTimeout"; case "GRAPHITE_PROTOCOL": return "graphite.protocol"; + case "LOG_LEVEL": + return "log.level"; default: throw new IllegalConfiguration("Unknown configuration option: " + key); } diff --git a/src/main/resources/javaagent.conf b/src/main/resources/javaagent.conf index 7198b77..2f950fd 100644 --- a/src/main/resources/javaagent.conf +++ b/src/main/resources/javaagent.conf @@ -22,4 +22,6 @@ graphite { protocol = ${?GRAPHITE_PROTOCOL} } -metricsPollingIntervalInSeconds = ${?INTERVAL_IN_SEC} \ No newline at end of file +metricsPollingIntervalInSeconds = ${?INTERVAL_IN_SEC} + +logLevel = ${?LOG_LEVEL} \ No newline at end of file