/** * Map string value to {@code OpLevel} * * @param valStr * level value string * @return mapped {@code OpLevel} object instance */ public OpLevel getLevel(String valStr) { if (valStr.equalsIgnoreCase(OpLevel.ANY_LEVEL)) { return OpLevel.anyLevel(); } else if (valStr.equalsIgnoreCase("SUCCESS")) { return OpLevel.INFO; } return OpLevel.valueOf(valStr); }
@Override public void set(OpLevel sev, Object key, Object value) { putKey(key, value != null ? sev.toString() + ":" + value : sev.toString()); }
/** * Randomly select a level based on a given level range * * @param minLevel * minimum level number * @param maxLevel * maximum level number * @return randomly selected level within specified range * @throws IllegalArgumentException * if maxLevel < minLevel */ public static OpLevel anyLevel(int minLevel, int maxLevel) { return valueOf(Utils.randomRange(minLevel, maxLevel)); }
@Override public void setConfiguration(Map<String, ?> settings) { config = settings; String levelStr = Utils.getString(LEVEL, settings, OpLevel.INFO.toString()); minLevel = levelStr.equalsIgnoreCase(OFF_LEVEL_LABEL) ? OFF_LEVEL_INT : OpLevel.valueOf(levelStr).ordinal(); elapsedUsec = Utils.getLong(ELAPSED_USEC, settings, elapsedUsec); waitUsec = Utils.getLong(WAIT_USEC, settings, waitUsec); wallUsec = Utils.getLong(WALL_USEC, settings, wallUsec); ttl = Utils.getLong(TTL_SEC, settings, ttl); // configure duplicate detection dupTimeoutSec = Utils.getLong(DUPS_TIMEOUT, settings, dupTimeoutSec); dupCacheSize = Utils.getInt(DUPS_CACHE_SIZE, settings, dupCacheSize); dupUseSoundex = Utils.getBoolean(DUPS_USE_SOUNDEX, settings, dupUseSoundex); dupAppendStats = Utils.getBoolean(DUPS_APPEND_STATS, settings, dupAppendStats); dupsSuppress = Utils.getBoolean(DUPS_SUPPRESS, settings, dupsSuppress); if (dupsSuppress) { msgTracker = TimeTracker.newTracker(dupCacheSize, dupTimeoutSec*2, TimeUnit.SECONDS); TrackingLogger.addDumpProvider(new TimeTrackerDumpProvider(EventLevelTimeFilter.class.getName(), "DupMsgHits", msgTracker)); } msgRegx = Utils.getString(MSG_PATTERN, settings, null); if (msgRegx != null) { msgPattern = Pattern.compile(msgRegx); } }
/** * Create a default filter with {@link OpLevel#INFO} as default threshold. * */ public EventLevelTimeFilter() { minLevel = OpLevel.INFO.ordinal(); }
protected void putKey(Object key, Object val) { String value = String.valueOf(val); int index = value.indexOf(":"); try { PropertyToken propertyToken = null; if (index > 0) { // token consists of sev:reg-exp pair String sevValue = value.substring(0, index); String valuePattern = value.substring(index + 1); OpLevel sevLimit = OpLevel.valueOf(sevValue.toUpperCase()); propertyToken = new PropertyToken(sevLimit, key, value, valuePattern); } else { // token only has severity limit specified String sevValue = value.trim(); if (!sevValue.isEmpty()) { OpLevel sevLimit = OpLevel.valueOf(sevValue.toUpperCase()); propertyToken = new PropertyToken(sevLimit, key, value, null); } } if (propertyToken != null) { logger.log(OpLevel.DEBUG, "putkey: repository={0}, token={1}", tokenRepository, propertyToken); tokenMap.put(key, propertyToken); } } catch (Throwable ex) { logger.log(OpLevel.ERROR, "Failed to process key={0}, value={1}, repository={2}", key, value, tokenRepository, ex); } }
/** * Matches a given sev/key/value with this token * * @return true of matches, false otherwise */ public boolean isMatch(OpLevel sev, Object key, Object value) { boolean match; boolean sevMatch = (sev.ordinal() >= sevLimit.ordinal()); match = sevMatch && ((value != null && valuePatten != null)? valuePatten.matcher(value.toString()).matches(): true); return match; }
/** * Converts the specified object to a member of the enumeration. * * @param value * object to convert * @return enumeration member * @throws NullPointerException * if value is {@code null} * @throws IllegalArgumentException * if object cannot be matched to a member of the enumeration */ public static OpLevel valueOf(Object value) { if (value == null) { throw new NullPointerException("object must be non-null"); } if (value instanceof Number) { return valueOf(((Number) value).intValue()); } else if (value instanceof String) { if (value.toString().equalsIgnoreCase(ANY_LEVEL)) { return anyLevel(); } return valueOf(value.toString()); } throw new IllegalArgumentException( "Cannot convert object of type '" + value.getClass().getName() + "' enum OpLevel"); } }
activity.setUser(value); } else if (key.equalsIgnoreCase(PARAM_SEVERITY_LABEL)) { activity.setSeverity(OpLevel.valueOf(value)); } else if (key.equalsIgnoreCase(PARAM_EXCEPTION_LABEL)) { activity.setException(value);
/** * Create a default filter with a given minimum level threshold. * * @param mLevel * minimum severity level threshold * @param elapsedUsc * elapsed time threshold (-1 disable) * @param waitUsc * wait time threshold (-1 disable) * @param wallUsc * wall time threshold (-1 disable) * @param msgRegex * message regex (null means all) */ public EventLevelTimeFilter(OpLevel mLevel, long elapsedUsc, long waitUsc, long wallUsc, String msgRegex) { minLevel = mLevel.ordinal(); elapsedUsec = elapsedUsc; waitUsec = waitUsc; wallUsec = wallUsc; msgRegx = msgRegex; if (msgRegx != null) { msgPattern = Pattern.compile(msgRegx); } }
ccode = OpCompCode.valueOf(value); } else if (key.equalsIgnoreCase(PARAM_SEVERITY_LABEL)) { event.getOperation().setSeverity(OpLevel.valueOf(value)); } else if (key.equalsIgnoreCase(PARAM_OP_TYPE_LABEL)) { event.getOperation().setType(OpType.valueOf(value));
/** * Returns true if a given level passes the filter, false otherwise * * @param level * event severity level * @param sink * event sink where filter request is coming from * @return true if level passed all filters, false otherwise * @see OpLevel * @see EventSink */ private boolean passLevel(OpLevel level, EventSink sink) { return (level.ordinal() >= minLevel) && sink.isSet(level); }
jsonString.append(JSON_SEVERITY_LABEL).append(ATTR_SEP); Utils.quote(level, jsonString).append(ATTR_JSON); jsonString.append(JSON_SEVERITY_NO_LABEL).append(ATTR_SEP).append(level.ordinal()).append(ATTR_JSON); jsonString.append(JSON_TYPE_LABEL).append(ATTR_SEP); Utils.quote(OpType.DATAGRAM, jsonString).append(ATTR_JSON);
jsonString.append(JSON_SEVERITY_NO_LABEL).append(ATTR_SEP).append(snap.getSeverity().ordinal()) .append(ATTR_JSON); jsonString.append(JSON_TYPE_LABEL).append(ATTR_SEP);
jsonString.append(JSON_SEVERITY_LABEL).append(ATTR_SEP); Utils.quote(activity.getSeverity(), jsonString).append(ATTR_JSON); jsonString.append(JSON_SEVERITY_NO_LABEL).append(ATTR_SEP).append(activity.getSeverity().ordinal()) .append(ATTR_JSON); jsonString.append(JSON_TYPE_LABEL).append(ATTR_SEP);
jsonString.append(JSON_SEVERITY_NO_LABEL).append(ATTR_SEP).append(event.getSeverity().ordinal()) .append(ATTR_JSON); jsonString.append(JSON_TYPE_LABEL).append(ATTR_SEP);