@ -19,6 +19,7 @@ package org.springframework.boot.actuate.metrics.statsd;
import java.io.Closeable ;
import com.timgroup.statsd.NonBlockingStatsDClient ;
import com.timgroup.statsd.StatsDClient ;
import com.timgroup.statsd.StatsDClientErrorHandler ;
import org.apache.commons.logging.Log ;
import org.apache.commons.logging.LogFactory ;
@ -26,6 +27,7 @@ import org.apache.commons.logging.LogFactory;
import org.springframework.boot.actuate.metrics.Metric ;
import org.springframework.boot.actuate.metrics.writer.Delta ;
import org.springframework.boot.actuate.metrics.writer.MetricWriter ;
import org.springframework.util.Assert ;
import org.springframework.util.StringUtils ;
/ * *
@ -43,7 +45,7 @@ public class StatsdMetricWriter implements MetricWriter, Closeable {
private static final Log logger = LogFactory . getLog ( StatsdMetricWriter . class ) ;
private final NonBlocking StatsDClient client ;
private final StatsDClient client ;
/ * *
* Create a new writer instance with the given parameters .
@ -61,12 +63,26 @@ public class StatsdMetricWriter implements MetricWriter, Closeable {
* @param port the port for the statsd server
* /
public StatsdMetricWriter ( String prefix , String host , int port ) {
prefix = StringUtils . hasText ( prefix ) ? prefix : null ;
while ( prefix ! = null & & prefix . endsWith ( "." ) ) {
prefix = prefix . substring ( 0 , prefix . length ( ) - 1 ) ;
this ( new NonBlockingStatsDClient ( trimPrefix ( prefix ) , host , port ,
new LoggingStatsdErrorHandler ( ) ) ) ;
}
/ * *
* Create a new writer with the given client .
* @param client StatsD client to write metrics with
* /
public StatsdMetricWriter ( StatsDClient client ) {
Assert . notNull ( client ) ;
this . client = client ;
}
private static String trimPrefix ( String prefix ) {
String trimmedPrefix = StringUtils . hasText ( prefix ) ? prefix : null ;
while ( trimmedPrefix ! = null & & trimmedPrefix . endsWith ( "." ) ) {
trimmedPrefix = trimmedPrefix . substring ( 0 , trimmedPrefix . length ( ) - 1 ) ;
}
this . client = new NonBlockingStatsDClient ( prefix , host , port ,
new LoggingStatsdErrorHandler ( ) ) ;
return trimmedPrefix ;
}
@Override