diff --git a/.travis.yml b/.travis.yml
index d8fba5273..5af5ebe11 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -43,7 +43,7 @@ before_install:
install:
- mvn -version -B
script:
-- mvn verify -Dwildfly.logging.console.level=INFO -Djboss-as.logging.console.level=INFO -Dterminal-event.timeout=25 -B
+- mvn verify -Dtest.logging.console.level=INFO -Dwildfly.logging.console.level=INFO -Djboss-as.logging.console.level=INFO -Dterminal-event.timeout=25 -B
after_failure: bash .travis.diagnose.sh
after_success:
- PROJECT_VERSION=`mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | grep -v '\['`
diff --git a/api/diff.txt b/api/diff.txt
index a87aebacd..350135af5 100644
--- a/api/diff.txt
+++ b/api/diff.txt
@@ -41,19 +41,30 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/pom.xml api/metrics-api-jaxrs-1
< antlr4-runtime
<
<
-60c68
+60,61c68,78
<
+<
---
>
-68c76
+>
+>
+> org.jboss.logging
+> jboss-logging
+>
+> provided
+>
+69c86
< resteasy-jackson2-provider
---
> resteasy-jackson-provider
-73c81
+74c91
< jboss-servlet-api_3.1_spec
---
> jboss-servlet-api_3.0_spec
-81,99d88
+82,100d98
<
<
<
@@ -73,13 +84,13 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/pom.xml api/metrics-api-jaxrs-1
< mockito-core
< test
<
-103c92
+104c102
< hawkular-metric-rest
---
> hawkular-metrics-api-rest-1.1
-105d93
+106d103
<
-107,121c95,101
+108,122c105,111
< org.antlr
< antlr4-maven-plugin
<
@@ -103,15 +114,15 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/pom.xml api/metrics-api-jaxrs-1
> 7.5.0.Final-redhat-15
> ${jboss-as.management.port}
>
-139c119
+140c129
< static/index.html
---
> index.html
-147c127
+148c137
< static/index.html
---
> index.html
-156,225d135
+157,226d145
<
<
<
@@ -189,7 +200,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
< import org.hawkular.metrics.api.jaxrs.filter.CorsResponseFilter;
46d43
< import org.hawkular.metrics.api.jaxrs.influx.InfluxSeriesHandler;
-48,49c45,47
+50,51c47,49
< import org.hawkular.metrics.api.jaxrs.param.ConvertersProvider;
< import org.hawkular.metrics.api.jaxrs.util.JacksonConfig;
---
@@ -218,13 +229,13 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/exception/mappers/ExceptionMapperUtils.java api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/exception/mappers/ExceptionMapperUtils.java
20a21
> import javax.ws.rs.core.Response.ResponseBuilder;
-34a36,40
+33a35,39
> public static Response buildResponse(Throwable exception, int statusCode) {
> ResponseBuilder responseBuilder = Response.status(statusCode);
> return buildErrorResponse(exception, responseBuilder);
> }
>
-36c42,47
+35c41,46
< Response response = Response.status(status)
---
> ResponseBuilder responseBuilder = Response.status(status);
@@ -464,15 +475,15 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
< import org.hawkular.metrics.api.jaxrs.handler.observer.ResultSetObserver;
65a62
> import org.hawkular.metrics.core.api.MetricAlreadyExistsException;
-72,76d68
+70,74d66
< import io.swagger.annotations.Api;
< import io.swagger.annotations.ApiOperation;
< import io.swagger.annotations.ApiParam;
< import io.swagger.annotations.ApiResponse;
< import io.swagger.annotations.ApiResponses;
-86d77
+84d75
< @Api(tags = "Availability")
-100,111c91,92
+96,107c87,88
< @ApiOperation(value = "Create availability metric. Same notes as creating gauge metric apply.")
< @ApiResponses(value = {
< @ApiResponse(code = 201, message = "Metric created successfully"),
@@ -488,13 +499,13 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
---
> public Response createAvailabilityMetric(
> MetricDefinition metricDefinition,
-115,116c96,97
+111,112c92,93
< asyncResponse.resume(badRequest(new ApiError("MetricDefinition type does not match " + MetricType
< .AVAILABILITY.getText())));
---
> return ApiUtils.badRequest(new ApiError("MetricDefinition type does not match " + MetricType
> .AVAILABILITY.getText()));
-121c102,111
+117c98,107
< metricsService.createMetric(metric).subscribe(new MetricCreatedObserver(asyncResponse, location));
---
> try {
@@ -507,7 +518,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> } catch (Exception e) {
> return serverError(e);
> }
-126,134c116,118
+122,130c112,114
< @ApiOperation(value = "Retrieve single metric definition.", response = MetricDefinition.class)
< @ApiResponses(value = {
< @ApiResponse(code = 200, message = "Metric's definition was successfully retrieved."),
@@ -521,7 +532,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> public Response getAvailabilityMetric(@PathParam("id") String id) {
> try {
> return metricsService.findMetric(new MetricId<>(tenantId, AVAILABILITY, id))
-138c122,126
+134c118,122
< .subscribe(asyncResponse::resume, t -> asyncResponse.resume(serverError(t)));
---
> .toBlocking()
@@ -529,7 +540,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> } catch (Exception e) {
> return serverError(e);
> }
-143,151c131
+139,147c127
< @ApiOperation(value = "Retrieve tags associated with the metric definition.", response = String.class,
< responseContainer = "Map")
< @ApiResponses(value = {
@@ -541,7 +552,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
< @Suspended final AsyncResponse asyncResponse,
---
> public Response getAvailabilityMetricTags(
-154,156c134,143
+150,152c130,139
< metricsService.getMetricTags(new MetricId<>(tenantId, AVAILABILITY, id)).subscribe(
< optional -> asyncResponse.resume(valueToResponse(optional)),
< t -> asyncResponse.resume(serverError(t)));
@@ -556,9 +567,9 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> } catch (Exception e) {
> return serverError(e);
> }
-158a146
+154a142
>
-161,167c149
+157,163c145
< @ApiOperation(value = "Update tags associated with the metric definition.")
< @ApiResponses(value = {
< @ApiResponse(code = 200, message = "Metric's tags were successfully updated."),
@@ -568,11 +579,11 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
< @Suspended final AsyncResponse asyncResponse,
---
> public Response updateAvailabilityMetricTags(
-169c151
+165c147
< @ApiParam(required = true) Map tags
---
> Map tags
-172c154,159
+168c150,155
< metricsService.addTags(metric, tags).subscribe(new ResultSetObserver(asyncResponse));
---
> try {
@@ -581,7 +592,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> } catch (Exception e) {
> return serverError(e);
> }
-177,184c164
+173,180c160
< @ApiOperation(value = "Delete tags associated with the metric definition.")
< @ApiResponses(value = {
< @ApiResponse(code = 200, message = "Metric's tags were successfully deleted."),
@@ -592,11 +603,11 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
< @Suspended final AsyncResponse asyncResponse,
---
> public Response deleteAvailabilityMetricTags(
-186c166
+182c162
< @ApiParam("Tag list") @PathParam("tags") Tags tags
---
> @PathParam("tags") Tags tags
-189c169,175
+185c165,171
< metricsService.deleteTags(metric, tags.getTags()).subscribe(new ResultSetObserver(asyncResponse));
---
>
@@ -606,7 +617,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> } catch (Exception e) {
> return serverError(e);
> }
-194,203c180,182
+190,199c176,178
< @ApiOperation(value = "Add data for a single availability metric.")
< @ApiResponses(value = {
< @ApiResponse(code = 200, message = "Adding data succeeded."),
@@ -621,7 +632,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> public Response addAvailabilityForMetric(
> @PathParam("id") String id,
> List data
-206,207c185,190
+202,203c181,186
< Observable observable = metricsService.addDataPoints(AVAILABILITY, metrics);
< observable.subscribe(new ResultSetObserver(asyncResponse));
---
@@ -631,7 +642,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> } catch (Exception e) {
> return serverError(e);
> }
-212,221c195
+208,217c191
< @ApiOperation(value = "Add metric data for multiple availability metrics in a single call.")
< @ApiResponses(value = {
< @ApiResponse(code = 200, message = "Adding data succeeded."),
@@ -644,7 +655,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
< @ApiParam(value = "List of availability metrics", required = true)
---
> public Response addAvailabilityData(
-225,226c199,204
+221,222c195,200
< Observable observable = metricsService.addDataPoints(AVAILABILITY, metrics);
< observable.subscribe(new ResultSetObserver(asyncResponse));
---
@@ -654,7 +665,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> } catch (Exception e) {
> return serverError(e);
> }
-231,238c209,210
+227,234c205,206
< @ApiOperation(value = "Find availabilities metrics data by their tags.", response = Map.class)
< @ApiResponses(value = { @ApiResponse(code = 200, message = "Successfully fetched data."),
< @ApiResponse(code = 204, message = "No matching data found."),
@@ -666,19 +677,19 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
---
> public Response findAvailabilityDataByTags(
> @QueryParam("tags") Tags tags
-241c213
+237c209
< asyncResponse.resume(badRequest(new ApiError("Missing tags query")));
---
> return badRequest(new ApiError("Missing tags query"));
-243,251c215,227
+239,247c211,221
< // @TODO Repeated code, refactor (in GaugeHandler also)
< metricsService.findAvailabilityByTags(tenantId, tags.getTags()).subscribe(m -> {
< if (m.isEmpty()) {
-< asyncResponse.resume(Response.noContent().build());
+< asyncResponse.resume(noContent());
< } else {
< asyncResponse.resume(Response.ok(m).build());
< }
-< }, t -> asyncResponse.resume(Response.serverError().entity(new ApiError(t.getMessage())).build()));
+< }, t -> asyncResponse.resume(serverError(t)));
<
---
> try {
@@ -688,13 +699,11 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> } else {
> return Response.ok(m).build();
> }
-> })
-> .toBlocking()
-> .lastOrDefault(null);
+> }).toBlocking().lastOrDefault(null);
> } catch (Exception e) {
-> return Response.serverError().entity(new ApiError(e.getMessage())).build();
+> return serverError(e);
> }
-257,269c233
+253,265c227
< @ApiOperation(value = "Retrieve availability data.", notes = "When buckets or bucketDuration query parameter is " +
< "used, the time range between start and end will be divided in buckets of equal duration, and " +
< "availability statistics will be computed for each bucket.", response = AvailabilityDataPoint.class,
@@ -710,7 +719,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
< @Suspended AsyncResponse asyncResponse,
---
> public Response findAvailabilityData(
-271,275c235,238
+267,271c229,232
< @ApiParam(value = "Defaults to now - 8 hours") @QueryParam("start") final Long start,
< @ApiParam(value = "Defaults to now") @QueryParam("end") final Long end,
< @ApiParam(value = "Total number of buckets") @QueryParam("buckets") Integer bucketsCount,
@@ -721,32 +730,26 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> @QueryParam("end") final Long end,
> @QueryParam("buckets") Integer bucketsCount,
> @QueryParam("bucketDuration") Duration bucketDuration,
-283d245
+279d239
<
-285c247,248
+281c241,242
< metricsService.findAvailabilityData(metricId, startTime, endTime, distinct)
---
> try {
> return metricsService.findAvailabilityData(metricId, startTime, endTime, distinct)
-289,294c252,257
-< .subscribe(
-< asyncResponse::resume,
-< t -> {
-< logger.warn("Failed to fetch availability data", t);
-< serverError(t);
-< });
+285c246,250
+< .subscribe(asyncResponse::resume, t -> asyncResponse.resume(serverError(t)));
---
> .toBlocking()
> .lastOrDefault(null);
> } catch (Exception e) {
-> logger.warn("Failed to fetch availability data", e);
> return serverError(e);
> }
-296c259
+287c252
< asyncResponse.resume(badRequest(new ApiError("Both buckets and bucketDuration parameters are used")));
---
> return badRequest(new ApiError("Both buckets and bucketDuration parameters are used"));
-306,307c269,276
+297,298c262,269
< asyncResponse.resume(badRequest(new ApiError("Bucket: " + e.getMessage())));
< return;
---
@@ -758,12 +761,12 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> .lastOrDefault(null);
> } catch (Exception e) {
> return serverError(e);
-309,312d277
+300,303d270
<
< metricsService.findAvailabilityStats(metricId, startTime, endTime, buckets)
< .map(ApiUtils::collectionToResponse)
-< .subscribe(asyncResponse::resume, ApiUtils::serverError);
-318,324c283
+< .subscribe(asyncResponse::resume, t -> asyncResponse.resume(serverError(t)));
+309,315c276
< @ApiOperation(value = "Add or update availability metric's tags.")
< @ApiResponses(value = {
< @ApiResponse(code = 200, message = "Tags were modified successfully."),
@@ -773,11 +776,11 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
< @Suspended final AsyncResponse asyncResponse,
---
> public Response tagAvailabilityData(
-326c285
+317c278
< @ApiParam(required = true) TagRequest params
---
> TagRequest params
-336c295,301
+327c288,294
< resultSetObservable.subscribe(new ResultSetObserver(asyncResponse));
---
>
@@ -787,7 +790,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> } catch (Exception e) {
> return serverError(e);
> }
-341,348c306,307
+332,339c299,300
< @ApiOperation(value = "Find availability metric data with given tags.", response = Map.class)
< @ApiResponses(value = { @ApiResponse(code = 200, message = "Availability values fetched successfully"),
< @ApiResponse(code = 204, message = "No matching data found."),
@@ -799,27 +802,29 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
---
> public Response findTaggedAvailabilityData(
> @PathParam("tags") Tags tags
-350,351c309,310
+341,342c302,303
< metricsService.findAvailabilityByTags(tenantId, tags.getTags())
< .subscribe(m -> { // @TODO Repeated code, refactor and use Optional?
---
> try {
> return metricsService.findAvailabilityByTags(tenantId, tags.getTags()).map(m -> {
-353c312
-< asyncResponse.resume(Response.noContent().build());
+344c305
+< asyncResponse.resume(noContent());
---
> return ApiUtils.noContent();
-355c314
+346c307
< asyncResponse.resume(Response.ok(m).build());
---
> return Response.ok(m).build();
-357c316,319
-< }, t -> asyncResponse.resume(Response.serverError().entity(new ApiError(t.getMessage())).build()));
+348c309,312
+< }, t -> asyncResponse.resume(serverError(t)));
---
> }).toBlocking().lastOrDefault(null);
> } catch (Exception e) {
-> return Response.serverError().entity(new ApiError(e.getMessage())).build();
+> return serverError(e);
> }
+349a314
+>
diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/handler/BaseHandler.java api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/handler/BaseHandler.java
39,40d38
< import io.swagger.annotations.ApiOperation;
@@ -836,15 +841,15 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
< import org.hawkular.metrics.api.jaxrs.handler.observer.ResultSetObserver;
56a53
> import org.hawkular.metrics.core.api.MetricAlreadyExistsException;
-63,67d59
+61,65d57
< import io.swagger.annotations.Api;
< import io.swagger.annotations.ApiOperation;
< import io.swagger.annotations.ApiParam;
< import io.swagger.annotations.ApiResponse;
< import io.swagger.annotations.ApiResponses;
-77d68
+75d66
< @Api(tags = "Counter")
-92,107c83,84
+87,102c78,79
< @ApiOperation(
< value = "Create counter metric. This operation also causes the rate to be calculated and " +
< "persisted periodically after raw count data is persisted.",
@@ -864,13 +869,13 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
---
> public Response createCounter(
> MetricDefinition metricDefinition,
-111,112c88,89
+106,107c83,84
< asyncResponse.resume(badRequest(new ApiError("MetricDefinition type does not match " + MetricType
< .COUNTER.getText())));
---
> return badRequest(new ApiError("MetricDefinition type does not match " + MetricType
> .COUNTER.getText()));
-117c94,103
+112c89,98
< metricsService.createMetric(metric).subscribe(new MetricCreatedObserver(asyncResponse, location));
---
> try {
@@ -883,7 +888,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> } catch (Exception e) {
> return serverError(e);
> }
-122,130c108,110
+117,125c103,105
< @ApiOperation(value = "Retrieve a counter definition", response = MetricDefinition.class)
< @ApiResponses(value = {
< @ApiResponse(code = 200, message = "Metric's definition was successfully retrieved."),
@@ -897,7 +902,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> public Response getCounter(@PathParam("id") String id) {
> try {
> return metricsService.findMetric(new MetricId<>(tenantId, COUNTER, id))
-133,134c113,117
+128,129c108,112
< .switchIfEmpty(Observable.just(noContent()))
< .subscribe(asyncResponse::resume, t -> asyncResponse.resume(serverError(t)));
---
@@ -906,7 +911,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> } catch (Exception e) {
> return serverError(e);
> }
-139,148c122
+134,143c117
< @ApiOperation(value = "Add data points for multiple counters")
< @ApiResponses(value = {
< @ApiResponse(code = 200, message = "Adding data points succeeded."),
@@ -919,7 +924,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
< ) {
---
> public Response addData(List counters) {
-150,151c124,129
+145,146c119,124
< Observable observable = metricsService.addDataPoints(COUNTER, metrics);
< observable.subscribe(new ResultSetObserver(asyncResponse));
---
@@ -929,7 +934,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> } catch (Exception e) {
> return serverError(e);
> }
-156,164c134
+151,159c129
< @ApiOperation(value = "Add data for a single counter")
< @ApiResponses(value = {
< @ApiResponse(code = 200, message = "Adding data succeeded."),
@@ -941,9 +946,9 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
< @Suspended final AsyncResponse asyncResponse,
---
> public Response addData(
-166d135
+161d130
< @ApiParam(value = "List of data points containing timestamp and value", required = true)
-170,171c139,144
+165,166c134,139
< Observable observable = metricsService.addDataPoints(COUNTER, metrics);
< observable.subscribe(new ResultSetObserver(asyncResponse));
---
@@ -953,7 +958,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> } catch (Exception e) {
> return serverError(e);
> }
-176,186c149
+171,181c144
< @ApiOperation(value = "Retrieve counter data points.", response = CounterDataPoint.class,
< responseContainer = "List")
< @ApiResponses(value = {
@@ -967,7 +972,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
< @Suspended AsyncResponse asyncResponse,
---
> public Response findCounterData(
-188,190c151,153
+183,185c146,148
< @ApiParam(value = "Defaults to now - 8 hours") @QueryParam("start") final Long start,
< @ApiParam(value = "Defaults to now") @QueryParam("end") final Long end) {
<
@@ -975,26 +980,20 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> @QueryParam("start") final Long start,
> @QueryParam("end") final Long end
> ) {
-195c158,159
+190c153,154
< metricsService.findDataPoints(new MetricId<>(tenantId, COUNTER, id), startTime, endTime)
---
> try {
> return metricsService.findDataPoints(new MetricId<>(tenantId, COUNTER, id), startTime, endTime)
-199,204c163,168
-< .subscribe(
-< asyncResponse::resume,
-< t -> {
-< logger.warn("Failed to fetch counter data", t);
-< serverError(t);
-< });
+194c158,162
+< .subscribe(asyncResponse::resume, t -> asyncResponse.resume(serverError(t)));
---
> .toBlocking()
> .lastOrDefault(null);
> } catch (Exception e) {
-> logger.warn("Failed to fetch counter data", e);
> return serverError(e);
> }
-209,221c173
+199,211c167
< @ApiOperation(
< value = "Retrieve counter rate data points which are automatically generated on the server side.",
< notes = "Rate data points are only generated for counters that are explicitly created.",
@@ -1010,7 +1009,7 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
< @Suspended AsyncResponse asyncResponse,
---
> public Response findRate(
-223,225c175,177
+213,215c169,171
< @ApiParam(value = "Defaults to now - 8 hours") @QueryParam("start") final Long start,
< @ApiParam(value = "Defaults to now") @QueryParam("end") final Long end) {
<
@@ -1018,27 +1017,19 @@ diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metr
> @QueryParam("start") final Long start,
> @QueryParam("end") final Long end
> ) {
-230c182,183
+220c176,177
< metricsService.findRateData(new MetricId<>(tenantId, COUNTER, id), startTime, endTime)
---
> try {
> return metricsService.findRateData(new MetricId<>(tenantId, COUNTER, id), startTime, endTime)
-234,239c187,192
-< .subscribe(
-< asyncResponse::resume,
-< t -> {
-< logger.warn("Failed to fetch counter rate data", t);
-< serverError(t);
-< });
+224c181,185
+< .subscribe(asyncResponse::resume, t -> asyncResponse.resume(serverError(t)));
---
> .toBlocking()
> .lastOrDefault(null);
> } catch (Exception e) {
-> logger.warn("Failed to fetch counter rate data", e);
> return serverError(e);
> }
-241d193
-<
diff -r '--exclude=target' api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/handler/GaugeHandler.java api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/handler/GaugeHandler.java
44,45d43
< import javax.ws.rs.container.AsyncResponse;
diff --git a/api/metrics-api-common/pom.xml b/api/metrics-api-common/pom.xml
index 123417e33..8bb4e21d4 100644
--- a/api/metrics-api-common/pom.xml
+++ b/api/metrics-api-common/pom.xml
@@ -114,5 +114,19 @@
provided
+
+
+
+ org.jboss.logging
+ jboss-logging-annotations
+ provided
+
+
+
+ org.jboss.logging
+ jboss-logging-processor
+ provided
+
+
diff --git a/api/metrics-api-common/src/main/java/org/hawkular/metrics/api/jaxrs/MetricsServiceLifecycle.java b/api/metrics-api-common/src/main/java/org/hawkular/metrics/api/jaxrs/MetricsServiceLifecycle.java
index 22cb15ebd..f9b912782 100644
--- a/api/metrics-api-common/src/main/java/org/hawkular/metrics/api/jaxrs/MetricsServiceLifecycle.java
+++ b/api/metrics-api-common/src/main/java/org/hawkular/metrics/api/jaxrs/MetricsServiceLifecycle.java
@@ -46,6 +46,8 @@
import org.hawkular.metrics.api.jaxrs.config.Configurable;
import org.hawkular.metrics.api.jaxrs.config.ConfigurationProperty;
+import org.hawkular.metrics.api.jaxrs.log.RestLogger;
+import org.hawkular.metrics.api.jaxrs.log.RestLogging;
import org.hawkular.metrics.api.jaxrs.util.Eager;
import org.hawkular.metrics.api.jaxrs.util.TestClock;
import org.hawkular.metrics.api.jaxrs.util.VirtualClock;
@@ -62,8 +64,6 @@
import org.hawkular.metrics.tasks.impl.TaskSchedulerImpl;
import org.hawkular.rx.cassandra.driver.RxSessionImpl;
import org.joda.time.DateTime;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.codahale.metrics.MetricRegistry;
import com.datastax.driver.core.Cluster;
@@ -86,7 +86,7 @@
@ApplicationScoped
@Eager
public class MetricsServiceLifecycle {
- private static final Logger LOG = LoggerFactory.getLogger(MetricsServiceLifecycle.class);
+ private static final RestLogger log = RestLogging.getRestLogger(MetricsServiceLifecycle.class);
/**
* @see #getState()
@@ -190,17 +190,16 @@ private void startMetricsService() {
if (state != State.STARTING) {
return;
}
- LOG.info("Initializing metrics service");
+ log.infoInitializing();
connectionAttempts++;
try {
session = createSession();
} catch (Exception t) {
Throwable rootCause = Throwables.getRootCause(t);
- LOG.warn("Could not connect to Cassandra cluster - assuming its not up yet: " + rootCause
- .getLocalizedMessage());
+ log.warnCouldNotConnectToCassandra(rootCause.getLocalizedMessage());
// cycle between original and more wait time - avoid waiting huge amounts of time
long delay = 1L + ((connectionAttempts - 1L) % 4L);
- LOG.warn("[{}] Retrying connecting to Cassandra cluster in [{}]s...", connectionAttempts, delay);
+ log.warnRetryingConnectingToCassandra(connectionAttempts, delay);
lifecycleExecutor.schedule(this::startMetricsService, delay, SECONDS);
return;
}
@@ -226,20 +225,20 @@ private void startMetricsService() {
// the registered metrics in various ways such as new REST endpoints, JMX, or via different
// com.codahale.metrics.Reporter instances.
metricsService.startUp(session, keyspace, false, false, new MetricRegistry());
- LOG.info("Metrics service started");
+ log.infoServiceStarted();
initJobs();
state = State.STARTED;
- } catch (Exception t) {
- LOG.error("An error occurred trying to connect to the Cassandra cluster", t);
+ } catch (Exception e) {
+ log.fatalCannotConnectToCassandra(e);
state = State.FAILED;
} finally {
if (state != State.STARTED) {
try {
metricsService.shutdown();
- } catch (Exception ignore) {
- LOG.error("Could not shutdown the metricsService instance: ", ignore);
+ } catch (Exception e) {
+ log.errorCouldNotCloseServiceInstance(e);
}
}
}
@@ -252,7 +251,7 @@ private Session createSession() {
port = Integer.parseInt(cqlPort);
} catch (NumberFormatException nfe) {
String defaultPort = CASSANDRA_CQL_PORT.defaultValue();
- LOG.warn("Invalid CQL port '{}', not a number. Will use a default of {}", cqlPort, defaultPort);
+ log.warnInvalidCqlPort(cqlPort, defaultPort);
port = Integer.parseInt(defaultPort);
}
clusterBuilder.withPort(port);
@@ -342,8 +341,8 @@ void destroy() {
Future stopFuture = lifecycleExecutor.submit(this::stopMetricsService);
try {
Futures.get(stopFuture, 1, MINUTES, Exception.class);
- } catch (Exception ignore) {
- LOG.error("Unexcepted exception while shutting down, ", ignore);
+ } catch (Exception e) {
+ log.errorShutdownProblem(e);
}
lifecycleExecutor.shutdown();
}
@@ -362,4 +361,4 @@ private void stopMetricsService() {
}
}
}
-}
\ No newline at end of file
+}
diff --git a/api/metrics-api-common/src/main/java/org/hawkular/metrics/api/jaxrs/log/RestLogger.java b/api/metrics-api-common/src/main/java/org/hawkular/metrics/api/jaxrs/log/RestLogger.java
new file mode 100644
index 000000000..d571acf63
--- /dev/null
+++ b/api/metrics-api-common/src/main/java/org/hawkular/metrics/api/jaxrs/log/RestLogger.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2014-2015 Red Hat, Inc. and/or its affiliates
+ * and other contributors as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.hawkular.metrics.api.jaxrs.log;
+
+import static org.jboss.logging.Logger.Level.ERROR;
+import static org.jboss.logging.Logger.Level.FATAL;
+import static org.jboss.logging.Logger.Level.INFO;
+import static org.jboss.logging.Logger.Level.WARN;
+
+import org.jboss.logging.BasicLogger;
+import org.jboss.logging.annotations.Cause;
+import org.jboss.logging.annotations.LogMessage;
+import org.jboss.logging.annotations.Message;
+import org.jboss.logging.annotations.MessageLogger;
+import org.jboss.logging.annotations.ValidIdRange;
+
+/**
+ * REST interface logging messages.
+ *
+ * @author Thomas Segismont
+ */
+@MessageLogger(projectCode = "HAWKMETRICS")
+@ValidIdRange(min = 200000, max = 209999)
+public interface RestLogger extends BasicLogger {
+
+ @LogMessage(level = INFO)
+ @Message(id = 200001, value = "Hawkular Metrics starting")
+ void infoAppStarting();
+
+ @LogMessage(level = INFO)
+ @Message(id = 200002, value = "Initializing metrics service")
+ void infoInitializing();
+
+ @LogMessage(level = WARN)
+ @Message(id = 200003, value = "Could not connect to Cassandra cluster - assuming its not up yet: %s")
+ void warnCouldNotConnectToCassandra(String msg);
+
+ @LogMessage(level = WARN)
+ @Message(id = 200004, value = "[%d] Retrying connecting to Cassandra cluster in [%d]s...")
+ void warnRetryingConnectingToCassandra(Integer connectionAttempts, Long delay);
+
+ @LogMessage(level = INFO)
+ @Message(id = 200005, value = "Metrics service started")
+ void infoServiceStarted();
+
+ @LogMessage(level = FATAL)
+ @Message(id = 200006, value = "An error occurred trying to connect to the Cassandra cluster")
+ void fatalCannotConnectToCassandra(@Cause Exception e);
+
+ @LogMessage(level = ERROR)
+ @Message(id = 200007, value = "Could not shutdown the Metrics service instance")
+ void errorCouldNotCloseServiceInstance(@Cause Exception e);
+
+ @LogMessage(level = WARN)
+ @Message(id = 200008, value = "Invalid CQL port %s, not a number. Will use a default of %s")
+ void warnInvalidCqlPort(String port, String defaultPort);
+
+ @LogMessage(level = ERROR)
+ @Message(id = 200009, value = "Unexcepted exception while shutting down")
+ void errorShutdownProblem(@Cause Exception e);
+
+ @LogMessage(level = ERROR)
+ @Message(id = 200010, value = "Failed to process request")
+ void errorRequestProblem(@Cause Throwable t);
+}
diff --git a/api/metrics-api-common/src/main/java/org/hawkular/metrics/api/jaxrs/log/RestLogging.java b/api/metrics-api-common/src/main/java/org/hawkular/metrics/api/jaxrs/log/RestLogging.java
new file mode 100644
index 000000000..b05cc3996
--- /dev/null
+++ b/api/metrics-api-common/src/main/java/org/hawkular/metrics/api/jaxrs/log/RestLogging.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2014-2015 Red Hat, Inc. and/or its affiliates
+ * and other contributors as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.hawkular.metrics.api.jaxrs.log;
+
+import org.jboss.logging.Logger;
+
+/**
+ * Simplify logger lookup.
+ *
+ * @author Thomas Segismont
+ */
+public class RestLogging {
+
+ public static RestLogger getRestLogger(Class> clazz) {
+ return Logger.getMessageLogger(RestLogger.class, clazz.getName());
+ }
+
+ private RestLogging() {
+ // Utility class
+ }
+}
diff --git a/api/metrics-api-common/src/main/java/org/hawkular/metrics/api/jaxrs/util/ApiUtils.java b/api/metrics-api-common/src/main/java/org/hawkular/metrics/api/jaxrs/util/ApiUtils.java
index a32e03aef..db21e7170 100644
--- a/api/metrics-api-common/src/main/java/org/hawkular/metrics/api/jaxrs/util/ApiUtils.java
+++ b/api/metrics-api-common/src/main/java/org/hawkular/metrics/api/jaxrs/util/ApiUtils.java
@@ -22,9 +22,9 @@
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
+import org.hawkular.metrics.api.jaxrs.log.RestLogger;
+import org.hawkular.metrics.api.jaxrs.log.RestLogging;
import org.hawkular.metrics.api.jaxrs.model.ApiError;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.common.base.Throwables;
@@ -32,17 +32,14 @@
* @author jsanda
*/
public class ApiUtils {
- private static final Logger LOG = LoggerFactory.getLogger(ApiUtils.class);
-
- private ApiUtils() {
- }
+ private static final RestLogger log = RestLogging.getRestLogger(ApiUtils.class);
public static Response collectionToResponse(Collection> collection) {
return collection.isEmpty() ? noContent() : Response.ok(collection).type(MediaType.APPLICATION_JSON).build();
}
public static Response serverError(Throwable t, String message) {
- LOG.trace("Server error response", t);
+ log.errorRequestProblem(t);
String errorMsg = message + ": " + Throwables.getRootCause(t).getMessage();
return Response.serverError().type(MediaType.APPLICATION_JSON).entity(new ApiError(errorMsg)).build();
}
@@ -71,4 +68,8 @@ public static Response badRequest(Throwable t) {
ApiError error = new ApiError(t.getLocalizedMessage());
return badRequest(error);
}
+
+ private ApiUtils() {
+ // Utility class
+ }
}
\ No newline at end of file
diff --git a/api/metrics-api-jaxrs-1.1/pom.xml b/api/metrics-api-jaxrs-1.1/pom.xml
index f24d5811b..ddf0a189d 100644
--- a/api/metrics-api-jaxrs-1.1/pom.xml
+++ b/api/metrics-api-jaxrs-1.1/pom.xml
@@ -66,6 +66,16 @@
+
+
+ org.jboss.logging
+ jboss-logging
+
+ provided
+
org.jboss.resteasy
resteasy-jaxrs
diff --git a/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/HawkularMetricsRestApp.java b/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/HawkularMetricsRestApp.java
index 5b68c4153..b3d1c7b96 100644
--- a/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/HawkularMetricsRestApp.java
+++ b/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/HawkularMetricsRestApp.java
@@ -42,23 +42,23 @@
import org.hawkular.metrics.api.jaxrs.handler.TenantsHandler;
import org.hawkular.metrics.api.jaxrs.handler.VirtualClockHandler;
import org.hawkular.metrics.api.jaxrs.interceptor.EmptyPayloadInterceptor;
+import org.hawkular.metrics.api.jaxrs.log.RestLogger;
+import org.hawkular.metrics.api.jaxrs.log.RestLogging;
import org.hawkular.metrics.api.jaxrs.param.DurationConverter;
import org.hawkular.metrics.api.jaxrs.param.MetricTypeConverter;
import org.hawkular.metrics.api.jaxrs.param.TagsConverter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
- * Rest app initialization
+ * Rest app initialization.
+ *
* @author Heiko W. Rupp
*/
@ApplicationPath("/")
public class HawkularMetricsRestApp extends Application {
-
- private static final Logger logger = LoggerFactory.getLogger(HawkularMetricsRestApp.class);
+ private static final RestLogger log = RestLogging.getRestLogger(HawkularMetricsRestApp.class);
public HawkularMetricsRestApp() {
- logger.info("Hawkular Metrics starting ..");
+ log.infoAppStarting();
}
/**
@@ -91,10 +91,10 @@ public Set> getClasses() {
boolean useVirtualClock = Boolean.valueOf(System.getProperty("hawkular.metrics.use-virtual-clock", "false"));
if (useVirtualClock) {
- logger.info("Deploying {}", VirtualClockHandler.class);
+ log.infof("Deploying %s", VirtualClockHandler.class.getCanonicalName());
classes.add(VirtualClockHandler.class);
} else {
- logger.info("Virtual clock is disabled");
+ log.info("Virtual clock is disabled");
}
// Add exception mapper providers
diff --git a/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/exception/mappers/ExceptionMapperUtils.java b/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/exception/mappers/ExceptionMapperUtils.java
index d9b281ee7..7482ac6d8 100644
--- a/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/exception/mappers/ExceptionMapperUtils.java
+++ b/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/exception/mappers/ExceptionMapperUtils.java
@@ -22,8 +22,7 @@
import javax.ws.rs.core.Response.Status;
import org.hawkular.metrics.api.jaxrs.model.ApiError;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.jboss.logging.Logger;
import com.google.common.base.Throwables;
@@ -31,7 +30,7 @@
* @author Jeeva Kandasamy
*/
public class ExceptionMapperUtils {
- private static final Logger LOG = LoggerFactory.getLogger(ExceptionMapperUtils.class);
+ private static final Logger log = Logger.getLogger(ExceptionMapperUtils.class);
public static Response buildResponse(Throwable exception, int statusCode) {
ResponseBuilder responseBuilder = Response.status(statusCode);
@@ -48,8 +47,8 @@ private static Response buildErrorResponse(Throwable exception, ResponseBuilder
.entity(new ApiError(Throwables.getRootCause(exception).getMessage()))
.type(MediaType.APPLICATION_JSON_TYPE)
.build();
- if (LOG.isTraceEnabled()) {
- LOG.trace("Turning " + exception.getClass().getCanonicalName() + " into a " + response.getStatus() + " " +
+ if (log.isTraceEnabled()) {
+ log.trace("Turning " + exception.getClass().getCanonicalName() + " into a " + response.getStatus() + " " +
"response", exception);
}
return response;
diff --git a/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/handler/AvailabilityHandler.java b/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/handler/AvailabilityHandler.java
index d3ef49452..5decc2149 100644
--- a/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/handler/AvailabilityHandler.java
+++ b/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/handler/AvailabilityHandler.java
@@ -63,8 +63,6 @@
import org.hawkular.metrics.core.api.MetricId;
import org.hawkular.metrics.core.api.MetricType;
import org.hawkular.metrics.core.api.MetricsService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import rx.Observable;
@@ -78,8 +76,6 @@
public class AvailabilityHandler {
private static final long EIGHT_HOURS = MILLISECONDS.convert(8, HOURS);
- private static final Logger logger = LoggerFactory.getLogger(AvailabilityHandler.class);
-
@Inject
private MetricsService metricsService;
@@ -219,11 +215,9 @@ public Response findAvailabilityDataByTags(
} else {
return Response.ok(m).build();
}
- })
- .toBlocking()
- .lastOrDefault(null);
+ }).toBlocking().lastOrDefault(null);
} catch (Exception e) {
- return Response.serverError().entity(new ApiError(e.getMessage())).build();
+ return serverError(e);
}
}
}
@@ -252,7 +246,6 @@ public Response findAvailabilityData(
.toBlocking()
.lastOrDefault(null);
} catch (Exception e) {
- logger.warn("Failed to fetch availability data", e);
return serverError(e);
}
} else if (bucketsCount != null && bucketDuration != null) {
@@ -315,7 +308,7 @@ public Response findTaggedAvailabilityData(
}
}).toBlocking().lastOrDefault(null);
} catch (Exception e) {
- return Response.serverError().entity(new ApiError(e.getMessage())).build();
+ return serverError(e);
}
}
diff --git a/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/handler/CounterHandler.java b/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/handler/CounterHandler.java
index 801f0c9f2..6824120be 100644
--- a/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/handler/CounterHandler.java
+++ b/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/handler/CounterHandler.java
@@ -54,8 +54,6 @@
import org.hawkular.metrics.core.api.MetricId;
import org.hawkular.metrics.core.api.MetricType;
import org.hawkular.metrics.core.api.MetricsService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import rx.Observable;
@@ -67,9 +65,6 @@
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
public class CounterHandler {
-
- private static Logger logger = LoggerFactory.getLogger(CounterHandler.class);
-
private static final long EIGHT_HOURS = MILLISECONDS.convert(8, HOURS);
@Inject
@@ -163,7 +158,6 @@ public Response findCounterData(
.toBlocking()
.lastOrDefault(null);
} catch (Exception e) {
- logger.warn("Failed to fetch counter data", e);
return serverError(e);
}
}
@@ -187,7 +181,6 @@ public Response findRate(
.toBlocking()
.lastOrDefault(null);
} catch (Exception e) {
- logger.warn("Failed to fetch counter rate data", e);
return serverError(e);
}
}
diff --git a/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/handler/VirtualClockHandler.java b/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/handler/VirtualClockHandler.java
index e93ca6ff1..2caadcbbc 100644
--- a/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/handler/VirtualClockHandler.java
+++ b/api/metrics-api-jaxrs-1.1/src/main/java/org/hawkular/metrics/api/jaxrs/handler/VirtualClockHandler.java
@@ -21,6 +21,8 @@
import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
+import static org.hawkular.metrics.api.jaxrs.util.ApiUtils.serverError;
+
import java.util.Map;
import java.util.concurrent.TimeUnit;
@@ -38,10 +40,8 @@
import org.hawkular.metrics.api.jaxrs.util.TestClock;
import org.hawkular.metrics.api.jaxrs.util.VirtualClock;
import org.hawkular.metrics.tasks.api.TaskScheduler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.jboss.logging.Logger;
-import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableMap;
import rx.observers.TestSubscriber;
@@ -55,11 +55,10 @@
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
public class VirtualClockHandler {
+ private static Logger log = Logger.getLogger(VirtualClockHandler.class);
public static final String PATH = "/clock";
- private static Logger logger = LoggerFactory.getLogger(VirtualClockHandler.class);
-
@Inject
@TestClock
private VirtualClock virtualClock;
@@ -104,9 +103,8 @@ public Response waitForDuration(@QueryParam("duration") Duration duration) {
return Response.ok().build();
} catch (Exception e) {
- logger.warn("Failed to wait " + numMinutes + " minutes for task scheduler to complete work", e);
- return Response.serverError().entity(ImmutableMap.of("errorMsg", Throwables.getStackTraceAsString(e)))
- .build();
+ log.warn("Failed to wait " + numMinutes + " minutes for task scheduler to complete work", e);
+ return serverError(e);
}
}
diff --git a/api/metrics-api-jaxrs/pom.xml b/api/metrics-api-jaxrs/pom.xml
index b5a1a8473..2fae1049e 100644
--- a/api/metrics-api-jaxrs/pom.xml
+++ b/api/metrics-api-jaxrs/pom.xml
@@ -58,6 +58,7 @@
+
org.jboss.resteasy
resteasy-jaxrs
diff --git a/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/HawkularMetricsRestApp.java b/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/HawkularMetricsRestApp.java
index 560d6ccfc..9c289b2e3 100644
--- a/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/HawkularMetricsRestApp.java
+++ b/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/HawkularMetricsRestApp.java
@@ -45,22 +45,22 @@
import org.hawkular.metrics.api.jaxrs.handler.VirtualClockHandler;
import org.hawkular.metrics.api.jaxrs.influx.InfluxSeriesHandler;
import org.hawkular.metrics.api.jaxrs.interceptor.EmptyPayloadInterceptor;
+import org.hawkular.metrics.api.jaxrs.log.RestLogger;
+import org.hawkular.metrics.api.jaxrs.log.RestLogging;
import org.hawkular.metrics.api.jaxrs.param.ConvertersProvider;
import org.hawkular.metrics.api.jaxrs.util.JacksonConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
- * Rest app initialization
+ * Rest app initialization.
+ *
* @author Heiko W. Rupp
*/
@ApplicationPath("/")
public class HawkularMetricsRestApp extends Application {
-
- private static final Logger logger = LoggerFactory.getLogger(HawkularMetricsRestApp.class);
+ private static final RestLogger log = RestLogging.getRestLogger(HawkularMetricsRestApp.class);
public HawkularMetricsRestApp() {
- logger.info("Hawkular Metrics starting ..");
+ log.infoAppStarting();
}
/**
@@ -94,10 +94,10 @@ public Set> getClasses() {
boolean useVirtualClock = Boolean.valueOf(System.getProperty("hawkular.metrics.use-virtual-clock", "false"));
if (useVirtualClock) {
- logger.info("Deploying {}", VirtualClockHandler.class);
+ log.infof("Deploying %s", VirtualClockHandler.class.getCanonicalName());
classes.add(VirtualClockHandler.class);
} else {
- logger.info("Virtual clock is disabled");
+ log.info("Virtual clock is disabled");
}
// Add exception mapper providers
diff --git a/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/exception/mappers/ExceptionMapperUtils.java b/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/exception/mappers/ExceptionMapperUtils.java
index 1387ecc21..27aa553b2 100644
--- a/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/exception/mappers/ExceptionMapperUtils.java
+++ b/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/exception/mappers/ExceptionMapperUtils.java
@@ -21,8 +21,7 @@
import javax.ws.rs.core.Response.Status;
import org.hawkular.metrics.api.jaxrs.model.ApiError;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.jboss.logging.Logger;
import com.google.common.base.Throwables;
@@ -30,15 +29,15 @@
* @author Jeeva Kandasamy
*/
public class ExceptionMapperUtils {
- private static final Logger LOG = LoggerFactory.getLogger(ExceptionMapperUtils.class);
+ private static final Logger log = Logger.getLogger(ExceptionMapperUtils.class);
public static Response buildResponse(Throwable exception, Status status) {
Response response = Response.status(status)
.entity(new ApiError(Throwables.getRootCause(exception).getMessage()))
.type(MediaType.APPLICATION_JSON_TYPE)
.build();
- if (LOG.isTraceEnabled()) {
- LOG.trace("Turning " + exception.getClass().getCanonicalName() + " into a " + response.getStatus() + " " +
+ if (log.isTraceEnabled()) {
+ log.trace("Turning " + exception.getClass().getCanonicalName() + " into a " + response.getStatus() + " " +
"response", exception);
}
return response;
diff --git a/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/handler/AvailabilityHandler.java b/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/handler/AvailabilityHandler.java
index 45d8084cf..83c93f492 100644
--- a/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/handler/AvailabilityHandler.java
+++ b/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/handler/AvailabilityHandler.java
@@ -66,8 +66,6 @@
import org.hawkular.metrics.core.api.MetricId;
import org.hawkular.metrics.core.api.MetricType;
import org.hawkular.metrics.core.api.MetricsService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -87,8 +85,6 @@
public class AvailabilityHandler {
private static final long EIGHT_HOURS = MILLISECONDS.convert(8, HOURS);
- private static final Logger logger = LoggerFactory.getLogger(AvailabilityHandler.class);
-
@Inject
private MetricsService metricsService;
@@ -243,11 +239,11 @@ public void findAvailabilityDataByTags(
// @TODO Repeated code, refactor (in GaugeHandler also)
metricsService.findAvailabilityByTags(tenantId, tags.getTags()).subscribe(m -> {
if (m.isEmpty()) {
- asyncResponse.resume(Response.noContent().build());
+ asyncResponse.resume(noContent());
} else {
asyncResponse.resume(Response.ok(m).build());
}
- }, t -> asyncResponse.resume(Response.serverError().entity(new ApiError(t.getMessage())).build()));
+ }, t -> asyncResponse.resume(serverError(t)));
}
}
@@ -286,12 +282,7 @@ public void findAvailabilityData(
.map(AvailabilityDataPoint::new)
.toList()
.map(ApiUtils::collectionToResponse)
- .subscribe(
- asyncResponse::resume,
- t -> {
- logger.warn("Failed to fetch availability data", t);
- serverError(t);
- });
+ .subscribe(asyncResponse::resume, t -> asyncResponse.resume(serverError(t)));
} else if (bucketsCount != null && bucketDuration != null) {
asyncResponse.resume(badRequest(new ApiError("Both buckets and bucketDuration parameters are used")));
} else {
@@ -309,7 +300,7 @@ public void findAvailabilityData(
metricsService.findAvailabilityStats(metricId, startTime, endTime, buckets)
.map(ApiUtils::collectionToResponse)
- .subscribe(asyncResponse::resume, ApiUtils::serverError);
+ .subscribe(asyncResponse::resume, t -> asyncResponse.resume(serverError(t)));
}
}
@@ -350,11 +341,10 @@ public void findTaggedAvailabilityData(
metricsService.findAvailabilityByTags(tenantId, tags.getTags())
.subscribe(m -> { // @TODO Repeated code, refactor and use Optional?
if (m.isEmpty()) {
- asyncResponse.resume(Response.noContent().build());
+ asyncResponse.resume(noContent());
} else {
asyncResponse.resume(Response.ok(m).build());
}
- }, t -> asyncResponse.resume(Response.serverError().entity(new ApiError(t.getMessage())).build()));
+ }, t -> asyncResponse.resume(serverError(t)));
}
-
}
diff --git a/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/handler/CounterHandler.java b/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/handler/CounterHandler.java
index d3b190a83..23daa24f5 100644
--- a/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/handler/CounterHandler.java
+++ b/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/handler/CounterHandler.java
@@ -57,8 +57,6 @@
import org.hawkular.metrics.core.api.MetricId;
import org.hawkular.metrics.core.api.MetricType;
import org.hawkular.metrics.core.api.MetricsService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -76,9 +74,6 @@
@Produces(APPLICATION_JSON)
@Api(tags = "Counter")
public class CounterHandler {
-
- private static Logger logger = LoggerFactory.getLogger(CounterHandler.class);
-
private static final long EIGHT_HOURS = MILLISECONDS.convert(8, HOURS);
@Inject
@@ -196,12 +191,7 @@ public void findCounterData(
.map(CounterDataPoint::new)
.toList()
.map(ApiUtils::collectionToResponse)
- .subscribe(
- asyncResponse::resume,
- t -> {
- logger.warn("Failed to fetch counter data", t);
- serverError(t);
- });
+ .subscribe(asyncResponse::resume, t -> asyncResponse.resume(serverError(t)));
}
@GET
@@ -231,12 +221,6 @@ public void findRate(
.map(GaugeDataPoint::new)
.toList()
.map(ApiUtils::collectionToResponse)
- .subscribe(
- asyncResponse::resume,
- t -> {
- logger.warn("Failed to fetch counter rate data", t);
- serverError(t);
- });
+ .subscribe(asyncResponse::resume, t -> asyncResponse.resume(serverError(t)));
}
-
}
diff --git a/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/handler/VirtualClockHandler.java b/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/handler/VirtualClockHandler.java
index e93ca6ff1..2caadcbbc 100644
--- a/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/handler/VirtualClockHandler.java
+++ b/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/handler/VirtualClockHandler.java
@@ -21,6 +21,8 @@
import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
+import static org.hawkular.metrics.api.jaxrs.util.ApiUtils.serverError;
+
import java.util.Map;
import java.util.concurrent.TimeUnit;
@@ -38,10 +40,8 @@
import org.hawkular.metrics.api.jaxrs.util.TestClock;
import org.hawkular.metrics.api.jaxrs.util.VirtualClock;
import org.hawkular.metrics.tasks.api.TaskScheduler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.jboss.logging.Logger;
-import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableMap;
import rx.observers.TestSubscriber;
@@ -55,11 +55,10 @@
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
public class VirtualClockHandler {
+ private static Logger log = Logger.getLogger(VirtualClockHandler.class);
public static final String PATH = "/clock";
- private static Logger logger = LoggerFactory.getLogger(VirtualClockHandler.class);
-
@Inject
@TestClock
private VirtualClock virtualClock;
@@ -104,9 +103,8 @@ public Response waitForDuration(@QueryParam("duration") Duration duration) {
return Response.ok().build();
} catch (Exception e) {
- logger.warn("Failed to wait " + numMinutes + " minutes for task scheduler to complete work", e);
- return Response.serverError().entity(ImmutableMap.of("errorMsg", Throwables.getStackTraceAsString(e)))
- .build();
+ log.warn("Failed to wait " + numMinutes + " minutes for task scheduler to complete work", e);
+ return serverError(e);
}
}
diff --git a/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/influx/InfluxSeriesHandler.java b/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/influx/InfluxSeriesHandler.java
index b153ae13b..278ab9d76 100644
--- a/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/influx/InfluxSeriesHandler.java
+++ b/api/metrics-api-jaxrs/src/main/java/org/hawkular/metrics/api/jaxrs/influx/InfluxSeriesHandler.java
@@ -80,10 +80,9 @@
import org.hawkular.metrics.core.api.Metric;
import org.hawkular.metrics.core.api.MetricId;
import org.hawkular.metrics.core.api.MetricsService;
+import org.jboss.logging.Logger;
import org.joda.time.Instant;
import org.joda.time.Interval;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableList;
@@ -101,7 +100,7 @@
@Produces(APPLICATION_JSON)
@ApplicationScoped
public class InfluxSeriesHandler {
- private static final Logger LOG = LoggerFactory.getLogger(InfluxSeriesHandler.class);
+ private static final Logger log = Logger.getLogger(InfluxSeriesHandler.class);
@Inject
MetricsService metricsService;
@@ -401,9 +400,7 @@ private List> applyMapping(
for (DataPoint rnm : list) {
retVal += rnm.getValue();
}
- if (LOG.isDebugEnabled()) {
- LOG.debug("Applying mean mapping, total = {}, size = {}", retVal, size);
- }
+ log.debugf("Applying mean mapping, total = %d, size = %d", retVal, size);
retVal /= size;
break;
case MAX:
@@ -506,7 +503,7 @@ private List> applyMapping(
retVal = Math.sqrt(sd);
break;
default:
- LOG.warn("Mapping of '{}' function not yet supported", function);
+ log.warnf("Mapping of '%s' function not supported yet", function);
}
if (isSingleValue) {
out.add(new DataPoint<>(firstElementInList.getTimestamp(), retVal));
diff --git a/api/metrics-api-jaxrs/src/test/resources/log4j.xml b/api/metrics-api-jaxrs/src/test/resources/log4j.xml
deleted file mode 100644
index de6fc13a9..000000000
--- a/api/metrics-api-jaxrs/src/test/resources/log4j.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/clients/ptranslator/README.adoc b/clients/ptranslator/README.adoc
index 2dabbfdc1..3820da814 100644
--- a/clients/ptranslator/README.adoc
+++ b/clients/ptranslator/README.adoc
@@ -106,21 +106,6 @@ LoadPlugin network
TIP: Don't forget to start a Hawkular Metrics web server as well.
-=== With the start script
-
-You can use the provided `start.sh` script to start the server (this will build the source first).
-
-Make sure to specify a configuration file on the command line:
-
-[source,bash]
-----
-./start.sh -c ptrans.conf
-----
-
-This method does not allow to configure logging and works on *nix systems only.
-
-=== With Maven
-
Once the project is built, simply run the following command:
[source,bash]
@@ -128,10 +113,10 @@ Once the project is built, simply run the following command:
mvn exec:java
----
-By default, the log4j and ptrans.conf files at the project base directory will be used.
+By default, the `logging-dev.properties` and `ptrans.conf` files at the project base directory will be used.
If you want to use your own files:
[source,bash]
----
-mvn exec:java -Ddev.log4j.configuration= -Ddev.ptrans.conf=
+mvn exec:java -Dlogback.configurationFile= -Ddev.ptrans.conf=
----
diff --git a/clients/ptranslator/log4j-dev.xml b/clients/ptranslator/log4j-dev.xml
deleted file mode 100644
index 8861aa6e7..000000000
--- a/clients/ptranslator/log4j-dev.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/clients/ptranslator/pom.xml b/clients/ptranslator/pom.xml
index 5de906c83..b6e35851c 100644
--- a/clients/ptranslator/pom.xml
+++ b/clients/ptranslator/pom.xml
@@ -38,7 +38,7 @@
true
hawkular_metrics_ptrans_integration_tests
- ${project.basedir}/log4j-dev.xml
+ ${project.basedir}/src/main/resources/logback-test.xml
${project.basedir}/ptrans.conf
@@ -59,14 +59,12 @@
1.0.7
- org.slf4j
- slf4j-log4j12
- ${slf4j.version}
+ org.jboss.logging
+ jboss-logging
- log4j
- log4j
- ${log4j.version}
+ ch.qos.logback
+ logback-classic
commons-cli
@@ -107,10 +105,29 @@
war
test
+
+
+ org.jboss.logging
+ jboss-logging-annotations
+ provided
+
+
+ org.jboss.logging
+ jboss-logging-processor
+ provided
+
ptrans
+
+
+ ${project.basedir}/src/main/resources
+
+ logback-test.xml
+
+
+
org.apache.maven.plugins
@@ -149,8 +166,8 @@
org.hawkular.metrics.clients.ptrans.Main
- log4j.configuration
- file:${dev.log4j.configuration}
+ logback.configurationFile
+ ${dev.logback.configuration}
diff --git a/clients/ptranslator/src/assembly/dist/assembly.xml b/clients/ptranslator/src/assembly/dist/assembly.xml
index 1ff358bfd..25a848ee0 100644
--- a/clients/ptranslator/src/assembly/dist/assembly.xml
+++ b/clients/ptranslator/src/assembly/dist/assembly.xml
@@ -33,7 +33,6 @@
.
LICENSE
- log4j.xml
ptrans.conf
644
@@ -45,6 +44,10 @@
true
644
+
+
+ 644
+
644
diff --git a/clients/ptranslator/src/assembly/dist/assets/README b/clients/ptranslator/src/assembly/dist/assets/README
index 5bba7c1a6..414bab416 100644
--- a/clients/ptranslator/src/assembly/dist/assets/README
+++ b/clients/ptranslator/src/assembly/dist/assets/README
@@ -8,9 +8,9 @@ The following command starts ptrans:
java -jar ptrans-all.jar -c
-By default, ptrans logs everything to the console, but you can make use your own log4j configuration file:
+By default, ptrans logs everything to the console, but you can use your own logback configuration file:
-java -jar ptrans-all.jar -Dlog4j.configuration=file: -c
+java -jar ptrans-all.jar -Dlogback.configurationFile= -c
=== STOPPING
diff --git a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/DemuxHandler.java b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/DemuxHandler.java
index c89ce336e..1dd024237 100644
--- a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/DemuxHandler.java
+++ b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/DemuxHandler.java
@@ -19,8 +19,7 @@
import java.util.List;
import org.hawkular.metrics.clients.ptrans.syslog.SyslogEventDecoder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.jboss.logging.Logger;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
@@ -34,7 +33,7 @@
* @author Heiko W. Rupp
*/
public class DemuxHandler extends ByteToMessageDecoder {
- private static final Logger logger = LoggerFactory.getLogger(DemuxHandler.class);
+ private static final Logger log = Logger.getLogger(DemuxHandler.class);
private ChannelInboundHandlerAdapter forwardingHandler;
@@ -54,8 +53,8 @@ protected void decode(ChannelHandlerContext ctx, ByteBuf msg, @SuppressWarnings(
ChannelPipeline pipeline = ctx.pipeline();
String data = msg.toString(CharsetUtil.UTF_8);
- if (logger.isDebugEnabled()) {
- logger.debug("Incoming: [" + data + "]");
+ if (log.isTraceEnabled()) {
+ log.trace("Incoming: [" + data + "]");
}
boolean done = false;
@@ -68,7 +67,9 @@ protected void decode(ChannelHandlerContext ctx, ByteBuf msg, @SuppressWarnings(
}
if (!done) {
- logger.warn("Unknown input [" + data + "], ignoring");
+ if (log.isTraceEnabled()) {
+ log.trace("Unknown input [" + data + "], ignoring");
+ }
msg.clear();
ctx.close();
}
diff --git a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/Main.java b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/Main.java
index f8419d68c..37ff66982 100644
--- a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/Main.java
+++ b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/Main.java
@@ -31,8 +31,8 @@
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.PosixParser;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.hawkular.metrics.clients.ptrans.log.PTransLogger;
+import org.hawkular.metrics.clients.ptrans.log.PTransLogging;
import jnr.posix.POSIXFactory;
@@ -45,7 +45,7 @@
* @author Thomas Segismont
*/
public class Main {
- private static final Logger LOG = LoggerFactory.getLogger(Main.class);
+ private static final PTransLogger log = PTransLogging.getPTransLogger(Main.class);
private final String[] args;
private final OptionsFactory optionsFactory;
@@ -147,7 +147,7 @@ public static void main(String[] args) {
try {
main.start();
} catch (Exception e) {
- LOG.error("Exception on startup", e);
+ log.errorStartupProblem(e);
System.exit(1);
}
}
diff --git a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/PTrans.java b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/PTrans.java
index 858c296ec..ffac9f727 100644
--- a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/PTrans.java
+++ b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/PTrans.java
@@ -35,11 +35,11 @@
import org.hawkular.metrics.clients.ptrans.collectd.CollectdServer;
import org.hawkular.metrics.clients.ptrans.ganglia.GangliaChannelInitializer;
import org.hawkular.metrics.clients.ptrans.graphite.GraphiteServer;
+import org.hawkular.metrics.clients.ptrans.log.PTransLogger;
+import org.hawkular.metrics.clients.ptrans.log.PTransLogging;
import org.hawkular.metrics.clients.ptrans.statsd.StatsdChannelInitializer;
import org.hawkular.metrics.clients.ptrans.syslog.TcpChannelInitializer;
import org.hawkular.metrics.clients.ptrans.syslog.UdpChannelInitializer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import io.netty.bootstrap.Bootstrap;
import io.netty.bootstrap.ServerBootstrap;
@@ -60,7 +60,7 @@
* @author Thomas Segismont
*/
public class PTrans {
- private static final Logger LOG = LoggerFactory.getLogger(PTrans.class);
+ private static final PTransLogger log = PTransLogging.getPTransLogger(PTrans.class);
private final Configuration configuration;
@@ -91,7 +91,7 @@ public PTrans(Configuration configuration) {
* Starts this PTrans instance. the calling thread will be blocked until another thread calls {@link #stop()}.
*/
public void start() {
- LOG.info("Starting ptrans...");
+ log.infoStarting();
group = new NioEventLoopGroup();
workerGroup = new NioEventLoopGroup();
@@ -113,7 +113,7 @@ public void start() {
.localAddress(configuration.getTcpPort())
.childHandler(new TcpChannelInitializer(nettyToVertxHandler));
ChannelFuture tcpBindFuture = serverBootstrap.bind().syncUninterruptibly();
- LOG.info("Server listening on TCP {}", tcpBindFuture.channel().localAddress());
+ log.infoServerListening("Server", "TCP", tcpBindFuture.channel().localAddress());
closeFutures.add(tcpBindFuture.channel().closeFuture());
}
@@ -124,7 +124,7 @@ public void start() {
.localAddress(configuration.getUdpPort())
.handler(new UdpChannelInitializer(nettyToVertxHandler));
ChannelFuture udpBindFuture = udpBootstrap.bind().syncUninterruptibly();
- LOG.info("Syslogd listening on UDP {}", udpBindFuture.channel().localAddress());
+ log.infoServerListening("Syslogd", "UDP", udpBindFuture.channel().localAddress());
closeFutures.add(udpBindFuture.channel().closeFuture());
}
@@ -151,12 +151,12 @@ public void start() {
.option(ChannelOption.IP_MULTICAST_IF, mcIf)
.localAddress(gangliaSocket)
.handler(new GangliaChannelInitializer(nettyToVertxHandler));
- LOG.trace("Ganglia bootstrap is {}", gangliaBootstrap);
+ log.tracef("Ganglia bootstrap is %s", gangliaBootstrap);
ChannelFuture gangliaBindFuture = gangliaBootstrap.bind().syncUninterruptibly();
- LOG.info("Ganglia listening on UDP {}", gangliaBindFuture.channel().localAddress());
+ log.infoServerListening("Ganglia", "UDP", gangliaBindFuture.channel().localAddress());
DatagramChannel gangliaChannel = (DatagramChannel) gangliaBindFuture.channel();
gangliaChannel.joinGroup(gangliaSocket, mcIf);
- LOG.trace("Joined the Ganglia group");
+ log.trace("Joined the Ganglia group");
closeFutures.add(gangliaChannel.closeFuture());
}
@@ -167,23 +167,23 @@ public void start() {
.localAddress(configuration.getStatsDport())
.handler(new StatsdChannelInitializer(nettyToVertxHandler));
ChannelFuture statsdBindFuture = statsdBootstrap.bind().syncUninterruptibly();
- LOG.info("Statsd listening on UDP {}", statsdBindFuture.channel().localAddress());
+ log.infoServerListening("Statsd", "UDP", statsdBindFuture.channel().localAddress());
closeFutures.add(statsdBindFuture.channel().closeFuture());
}
if (services.contains(Service.GRAPHITE)) {
vertx.deployVerticle(new GraphiteServer(configuration), handler -> {
- LOG.info("Graphite listening on TCP {}", configuration.getGraphitePort());
+ log.infoServerListening("Graphite", "TCP", configuration.getGraphitePort());
});
}
if (services.contains(Service.COLLECTD)) {
vertx.deployVerticle(new CollectdServer(configuration), handler -> {
- LOG.info("Collectd listening on UDP {}", configuration.getCollectdPort());
+ log.infoServerListening("Collectd", "UDP", configuration.getCollectdPort());
});
}
- LOG.info("ptrans started");
+ log.infoStarted();
closeFutures.forEach(ChannelFuture::syncUninterruptibly);
}
@@ -192,7 +192,7 @@ public void start() {
* Stops this PTrans instance.
*/
public void stop() {
- LOG.info("Stopping ptrans...");
+ log.infoStopping();
group.shutdownGracefully().syncUninterruptibly();
workerGroup.shutdownGracefully().syncUninterruptibly();
Set deploymentIDs = vertx.deploymentIDs().stream()
@@ -221,6 +221,6 @@ public void stop() {
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
- LOG.info("ptrans stopped");
+ log.infoStopped();
}
}
diff --git a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/backend/MetricsSender.java b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/backend/MetricsSender.java
index 0be091f25..918f7155d 100644
--- a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/backend/MetricsSender.java
+++ b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/backend/MetricsSender.java
@@ -25,8 +25,7 @@
import org.hawkular.metrics.client.common.MetricBuffer;
import org.hawkular.metrics.client.common.SingleMetric;
import org.hawkular.metrics.clients.ptrans.Configuration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.jboss.logging.Logger;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Future;
@@ -48,7 +47,7 @@
* @author Thomas Segismont
*/
public class MetricsSender extends AbstractVerticle {
- private static final Logger LOG = LoggerFactory.getLogger(MetricsSender.class);
+ private static final Logger log = Logger.getLogger(MetricsSender.class);
private final String host;
private final int port;
@@ -150,9 +149,9 @@ private void send(List metrics) {
HttpClientRequest req = httpClient.post(postUri, response -> {
connectionsUsed--;
if (response.statusCode() != 200) {
- if (LOG.isTraceEnabled()) {
+ if (log.isTraceEnabled()) {
response.bodyHandler(msg -> {
- LOG.trace("Could not send metrics: " + response.statusCode() + " : " + msg.toString());
+ log.trace("Could not send metrics: " + response.statusCode() + " : " + msg.toString());
});
}
buffer.reInsert(metrics);
@@ -167,7 +166,7 @@ private void send(List metrics) {
req.putHeader(Constants.TENANT_HEADER_NAME, tenant);
req.exceptionHandler(err -> {
connectionsUsed--;
- LOG.trace("Could not send metrics", err);
+ log.trace("Could not send metrics", err);
buffer.reInsert(metrics);
metricInserted();
});
diff --git a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/collectd/CollectdServer.java b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/collectd/CollectdServer.java
index 136ec37b6..1b3501f3e 100644
--- a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/collectd/CollectdServer.java
+++ b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/collectd/CollectdServer.java
@@ -30,8 +30,6 @@
import org.hawkular.metrics.clients.ptrans.collectd.event.ValueListEvent;
import org.hawkular.metrics.clients.ptrans.collectd.packet.CollectdPacket;
import org.hawkular.metrics.clients.ptrans.collectd.packet.CollectdPacketDecoder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Future;
@@ -42,8 +40,6 @@
* @author Thomas Segismont
*/
public class CollectdServer extends AbstractVerticle {
- private static final Logger LOG = LoggerFactory.getLogger(CollectdServer.class);
-
private final int port;
private final CollectdPacketDecoder packetDecoder;
private final CollectdEventsDecoder eventsDecoder;
diff --git a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/collectd/event/CollectdEventsDecoder.java b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/collectd/event/CollectdEventsDecoder.java
index 0e41c0ebb..7afe3ebca 100644
--- a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/collectd/event/CollectdEventsDecoder.java
+++ b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/collectd/event/CollectdEventsDecoder.java
@@ -29,14 +29,13 @@
import org.hawkular.metrics.clients.ptrans.collectd.packet.StringPart;
import org.hawkular.metrics.clients.ptrans.collectd.packet.ValuePart;
import org.hawkular.metrics.clients.ptrans.collectd.packet.Values;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.jboss.logging.Logger;
/**
* @author Thomas Segismont
*/
public final class CollectdEventsDecoder {
- private static final Logger LOG = LoggerFactory.getLogger(CollectdEventsDecoder.class);
+ private static final Logger log = Logger.getLogger(CollectdEventsDecoder.class);
private static final String EMPTY_STRING_VALUE = "";
@@ -81,17 +80,17 @@ public List decode(CollectdPacket packet) {
host, timestamp, pluginName, pluginInstance, typeName,
typeInstance, getValues(part).getData(), interval
);
- LOG.trace("Decoded ValueListEvent: {}", event);
+ log.tracef("Decoded ValueListEvent: %s", event);
events.add(event);
break;
default:
- LOG.debug("Skipping unknown part type: {}", partType);
+ log.tracef("Skipping unknown part type: %s", partType);
}
}
- if (LOG.isTraceEnabled()) {
+ if (log.isTraceEnabled()) {
long stop = System.currentTimeMillis();
- LOG.trace("Decoded events in {} ms", stop - start);
+ log.tracef("Decoded events in %d ms", stop - start);
}
return events;
diff --git a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/collectd/packet/CollectdPacketDecoder.java b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/collectd/packet/CollectdPacketDecoder.java
index 83fa6ea93..48acd3ee5 100644
--- a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/collectd/packet/CollectdPacketDecoder.java
+++ b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/collectd/packet/CollectdPacketDecoder.java
@@ -21,8 +21,7 @@
import java.util.List;
import org.hawkular.metrics.clients.ptrans.collectd.event.DataType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.jboss.logging.Logger;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufUtil;
@@ -35,7 +34,7 @@
* @author Thomas Segismont
*/
public final class CollectdPacketDecoder {
- private static final Logger LOG = LoggerFactory.getLogger(CollectdPacketDecoder.class);
+ private static final Logger log = Logger.getLogger(CollectdPacketDecoder.class);
public CollectdPacket decode(DatagramPacket packet) {
long start = System.currentTimeMillis();
@@ -80,20 +79,20 @@ public CollectdPacket decode(DatagramPacket packet) {
}
//noinspection ConstantConditions
if (part != null) {
- LOG.trace("Decoded part: {}", part);
+ log.tracef("Decoded part: %s", part);
parts.add(part);
}
}
- if (LOG.isTraceEnabled()) {
+ if (log.isTraceEnabled()) {
long stop = System.currentTimeMillis();
- LOG.trace("Decoded datagram in {} ms", stop - start);
+ log.tracef("Decoded datagram in %d ms", stop - start);
}
if (parts.size() > 0) {
return new CollectdPacket(parts);
} else {
- LOG.debug("No parts decoded, no CollectdPacket output");
+ log.trace("No parts decoded, no CollectdPacket output");
return null;
}
}
@@ -139,7 +138,7 @@ private Values readValuePartContent(ByteBuf content, int length) {
data.add(Double.longBitsToDouble(ByteBufUtil.swapLong(content.readLong())));
break;
default:
- LOG.debug("Skipping unknown data type: {}", dataType);
+ log.tracef("Skipping unknown data type: %s", dataType);
}
}
// Skip any additionnal bytes
diff --git a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/graphite/GraphiteServer.java b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/graphite/GraphiteServer.java
index 73d1cfa99..d5cc9b5de 100644
--- a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/graphite/GraphiteServer.java
+++ b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/graphite/GraphiteServer.java
@@ -23,8 +23,7 @@
import org.hawkular.metrics.client.common.SingleMetric;
import org.hawkular.metrics.clients.ptrans.Configuration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.jboss.logging.Logger;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Future;
@@ -38,7 +37,7 @@
* @author Thomas Segismont
*/
public class GraphiteServer extends AbstractVerticle {
- private static final Logger LOG = LoggerFactory.getLogger(GraphiteServer.class);
+ private static final Logger log = Logger.getLogger(GraphiteServer.class);
private final int port;
private final RecordParser recordParser;
@@ -68,7 +67,7 @@ private void handleRecord(Buffer buf) {
String[] items = msg.split(" ");
if (items.length != 3) {
- LOG.debug("Unknown data format for '{}', skipping", msg);
+ log.tracef("Unknown data format for '%s', skipping", msg);
return;
}
diff --git a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/log/PTransLogger.java b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/log/PTransLogger.java
new file mode 100644
index 000000000..eec9a2b6f
--- /dev/null
+++ b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/log/PTransLogger.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2014-2015 Red Hat, Inc. and/or its affiliates
+ * and other contributors as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.hawkular.metrics.clients.ptrans.log;
+
+import static org.jboss.logging.Logger.Level.ERROR;
+import static org.jboss.logging.Logger.Level.INFO;
+
+import org.jboss.logging.BasicLogger;
+import org.jboss.logging.annotations.Cause;
+import org.jboss.logging.annotations.LogMessage;
+import org.jboss.logging.annotations.Message;
+import org.jboss.logging.annotations.MessageLogger;
+import org.jboss.logging.annotations.ValidIdRange;
+
+/**
+ * PTrans logging messages.
+ *
+ * @author Thomas Segismont
+ */
+@MessageLogger(projectCode = "HAWKMETRICS")
+@ValidIdRange(min = 500000, max = 509999)
+public interface PTransLogger extends BasicLogger {
+
+ @LogMessage(level = INFO)
+ @Message(id = 500001, value = "Starting ptrans...")
+ void infoStarting();
+
+ @LogMessage(level = ERROR)
+ @Message(id = 500002, value = "Exception on startup")
+ void errorStartupProblem(@Cause Exception e);
+
+ @LogMessage(level = INFO)
+ @Message(id = 500003, value = "%s listening on %s %s")
+ void infoServerListening(String serverType, String protocol, Object address);
+
+ @LogMessage(level = INFO)
+ @Message(id = 500004, value = "ptrans started")
+ void infoStarted();
+
+ @LogMessage(level = INFO)
+ @Message(id = 500005, value = "Stopping ptrans...")
+ void infoStopping();
+
+ @LogMessage(level = INFO)
+ @Message(id = 500006, value = "ptrans stopped")
+ void infoStopped();
+}
diff --git a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/log/PTransLogging.java b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/log/PTransLogging.java
new file mode 100644
index 000000000..ff4bd8d11
--- /dev/null
+++ b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/log/PTransLogging.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2014-2015 Red Hat, Inc. and/or its affiliates
+ * and other contributors as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.hawkular.metrics.clients.ptrans.log;
+
+import org.jboss.logging.Logger;
+
+/**
+ * Simplify logger lookup.
+ *
+ * @author Thomas Segismont
+ */
+public class PTransLogging {
+
+ public static PTransLogger getPTransLogger(Class> clazz) {
+ return Logger.getMessageLogger(PTransLogger.class, clazz.getName());
+ }
+
+ private PTransLogging() {
+ // Utility class
+ }
+}
diff --git a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/syslog/DecoderUtil.java b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/syslog/DecoderUtil.java
index 394ed45d9..3b005baa1 100644
--- a/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/syslog/DecoderUtil.java
+++ b/clients/ptranslator/src/main/java/org/hawkular/metrics/clients/ptrans/syslog/DecoderUtil.java
@@ -22,8 +22,7 @@
import java.util.regex.Pattern;
import org.hawkular.metrics.client.common.SingleMetric;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.jboss.logging.Logger;
import io.netty.buffer.ByteBuf;
import io.netty.util.CharsetUtil;
@@ -40,8 +39,8 @@
* @author Heiko W. Rupp
*/
public class DecoderUtil {
+ private static final Logger log = Logger.getLogger(DecoderUtil.class);
- private static final Logger logger = LoggerFactory.getLogger(DecoderUtil.class);
private static Pattern statsDPattern = Pattern.compile("([A-Za-z\\.]+):([0-9\\.]+)\\|[a-z]");
public static void decodeTheBuffer(ByteBuf data, List