1 /* 2 * Copyright 2010 Capgemini 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 * 15 */ 16 package net.sf.appstatus.core.services; 17 18 import org.slf4j.Logger; 19 20 /** 21 * Service monitor 22 * 23 * @author Guillaume Mary 24 * @author Nicolas Richeton 25 * 26 */ 27 public interface IServiceMonitor { 28 29 /** 30 * Notify of the beginning of a call to a service. 31 * 32 * @param operationName 33 * operation name 34 * @param parameters 35 * operation parameters 36 * @return call id 37 */ 38 void beginCall(Object... parameters); 39 40 /** 41 * Reports that a cache system was used instead of performing the actual 42 * call. 43 * 44 */ 45 void cacheHit(); 46 47 void context(String name, String value); 48 49 void correlationId(String correlationId); 50 51 /** 52 * Notify the end of a call to a service. 53 * 54 */ 55 void endCall(); 56 57 /** 58 * Reports an error : the call has succeed but returns an error (with data). 59 * 60 * @param message 61 */ 62 void error(String message); 63 64 /** 65 * Manually set the execution time. If this method is not called, execution 66 * time is computed between beginCall and endCall. 67 */ 68 void executionTime(long timeMillis); 69 70 /** 71 * Reports a failure : the call has failed completely 72 * 73 * @param reason 74 */ 75 void failure(String reason); 76 77 /** 78 * Reports a failure : the call has failed completely with exception e. 79 * 80 * @param reason 81 * @param e 82 */ 83 void failure(String reason, Exception e); 84 85 /** 86 * Report that another service was called in order to perform original 87 * action 88 */ 89 void nestedCall(); 90 91 /** 92 * Set the log message format for this monitor instance, based on : 93 * http://commons.apache.org/lang/api-release/org/apache/commons/lang3/text/ 94 * StrSubstitutor.html 95 * 96 * <p> 97 * Example : 98 * <code>${correlationId}|${group}|${name}|${responseTime}|${cache}|${status}|${statusMessage}</code> 99 * </p> 100 * 101 * <p> 102 * Available variables : 103 * </p> 104 * <ul> 105 * <li>group</li> 106 * <li>name</li> 107 * <li>responseTime</li> 108 * <li>cache</li> 109 * <li>failure</li> 110 * <li>failureReason</li> 111 * <li>failureException</li> 112 * <li>error</li> 113 * <li>errorMessage</li> 114 * <li>correlationId</li> 115 * <li>status : SUCCESS/FAILURE/ERROR</li> 116 * <li>statusMessage : failure or error message</li> 117 * <li>Any additional context values</li> 118 * </ul> 119 * 120 * @param format 121 */ 122 void setLogFormat(String format); 123 124 /** 125 * Set the logger to use for this service call. 126 * 127 * @param logger 128 */ 129 void setLogger(Logger logger); 130 131 }