/** * Obtain elapsed microseconds since last event * * @param key * timer key * @return elapsed microseconds since last event */ protected long getUsecSinceLastEvent(String key) { return TimeUnit.NANOSECONDS.toMicros(timeTracker.hitAndGet(key)); }
/** * Create a default time tracker with specified capacity and life span. * * @param capacity * maximum capacity * @param lifeSpan * life span in milliseconds * @return a new time tracker instance */ public static TimeTracker newTracker(int capacity, long lifeSpan) { return new TimeTracker(capacity, lifeSpan, TimeUnit.MILLISECONDS); }
private boolean isDuplicate(TrackingEvent event, String msg) { if (msgTracker != null) { String key = dupUseSoundex? soundex.soundex(msg): msg; long hitCount = msgTracker.hitAndGetCount(key); if ((hitCount > 1) && (msgTracker.getHitAge(msg, TimeUnit.SECONDS) < dupTimeoutSec)) { msgTracker.missAndGetCount(key); return true; } else if (dupAppendStats && (event != null && hitCount > 1)) { event.getOperation().addProperty(new Property("_hitCount", hitCount, ValueTypes.VALUE_TYPE_COUNTER)); event.getOperation().addProperty(new Property("_missCount", msgTracker.getMissCount(key), ValueTypes.VALUE_TYPE_COUNTER)); event.getOperation().addProperty(new Property("_hit_last_age_ms", msgTracker.getHitAge(msg, TimeUnit.MILLISECONDS), ValueTypes.VALUE_TYPE_AGE_MSEC)); event.getOperation().addProperty(new Property("_miss_last_age_ms", msgTracker.getMissAge(msg, TimeUnit.MILLISECONDS), ValueTypes.VALUE_TYPE_AGE_MSEC)); } } return false; } }
@Override public DumpCollection getDump() { Dump dump = new Dump(getCategoryName() + "-Table", this); for (Entry<String, TimeStats> entry : timeTracker.getTimeStats().entrySet()) { dump.add( entry.getKey(), "h(" + entry.getValue().getHitCount() + "-" + entry.getValue().getHitAge(TimeUnit.MILLISECONDS) + ")" + "m(" + entry.getValue().getMissCount() + "-" + entry.getValue().getMissAge(TimeUnit.MILLISECONDS) + ")"); } return dump; } }
@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); } }
/** * Obtain elapsed nanoseconds since last event * * @return elapsed nanoseconds since last event */ protected long getUsecsSinceLastEvent() { return TimeUnit.NANOSECONDS.toMicros(TimeTracker.hitAndGet()); }
/** * Create a default time tracker with specified capacity and life span. * * @param capacity * maximum capacity * @param lifeSpan * life span in specified time unit * @param tunit * time unit * @return a new time tracker instance */ public static TimeTracker newTracker(int capacity, long lifeSpan, TimeUnit tunit) { return new TimeTracker(capacity, lifeSpan, tunit); }
/** * Obtain elapsed nanoseconds since last logging event * * @return elapsed nanoseconds since last logging event */ protected long getUsecsSinceLastEvent() { return TimeUnit.NANOSECONDS.toMicros(TimeTracker.hitAndGet()); }