Class ThrottleLogger


  • public class ThrottleLogger
    extends java.lang.Object
    Logger that will repeat the same message not more than once per defined interval. Messages are stored in WeakHashMap as keys. This means that throttling might not actually work if full GC is run. This is a trade-off from storing hard references to messages and always remembering them for the full hour so that memory can be freed if java needs it.
    • Field Detail

      • TIME_1_HOUR

        public static final long TIME_1_HOUR
      • TIME_5_MINS

        public static final long TIME_5_MINS
      • TIME_1_MIN

        public static final long TIME_1_MIN
      • TIME_30_SEC

        public static final long TIME_30_SEC
    • Method Detail

      • getLogger

        public static ThrottleLogger getLogger​(java.lang.Class<?> aClass,
                                               long timeLimitNanos,
                                               long messageLimit,
                                               boolean lowerLevel)
      • getLogger

        public static ThrottleLogger getLogger​(java.lang.String category,
                                               long timeLimitNanos,
                                               long messageLimit,
                                               boolean lowerLevel)
      • getLogger

        public static ThrottleLogger getLogger​(java.lang.Class<?> aClass,
                                               long timeLimitNanos)
      • getLogger

        public static ThrottleLogger getLogger​(java.lang.String category,
                                               long timeLimitNanos)
      • getLogger

        public static ThrottleLogger getLogger​(java.lang.Class<?> aClass,
                                               long timeLimitNanos,
                                               boolean lowerLevel)
      • getLLogger

        public static ThrottleLogger getLLogger​(java.lang.Class<?> aClass,
                                                long timeLimitNanos)
        Logs duplicate messages with lower priority instead of just ignoring them.
        Parameters:
        aClass - class used to create the name of the logger.
        timeLimitNanos - time period during which same messages will be treated as duplicates.
        Returns:
        created logger
      • getNoThrottleLogger

        public static ThrottleLogger getNoThrottleLogger​(java.lang.Class<?> aClass)
      • getNoThrottleLogger

        public static ThrottleLogger getNoThrottleLogger​(java.lang.String category)
      • getLogger

        public static ThrottleLogger getLogger​(java.lang.Class<?> aClass)
      • getLogger

        public static ThrottleLogger getLogger​(java.lang.String category)
      • get1MinLogger

        public static ThrottleLogger get1MinLogger​(java.lang.Class<?> aClass)
      • get5MinLogger

        public static ThrottleLogger get5MinLogger​(java.lang.Class<?> aClass)
      • get5MinLogger

        public static ThrottleLogger get5MinLogger​(java.lang.String category)
      • get1HrLogger

        public static ThrottleLogger get1HrLogger​(java.lang.Class<?> aClass)
      • getLLogger

        public static ThrottleLogger getLLogger​(java.lang.Class<?> aClass)
        Logs duplicate messages with lower priority instead of just ignoring, with 5 minutes throttling.
        Parameters:
        aClass - class used to create the name of the logger.
        Returns:
        created logger
      • get5MinLLogger

        public static ThrottleLogger get5MinLLogger​(java.lang.Class<?> aClass)
      • get1MinLLogger

        public static ThrottleLogger get1MinLLogger​(java.lang.Class<?> aClass)
      • warn

        public void warn​(java.lang.String message,
                         java.lang.Object... args)
      • fatal

        public void fatal​(java.lang.String message,
                          java.lang.Object... args)
      • error

        public void error​(java.lang.String message,
                          java.lang.Object... args)
      • info

        public void info​(java.lang.String message,
                         java.lang.Object... args)
      • debug

        public void debug​(java.lang.String message,
                          java.lang.Object... args)
      • warnAndDebugDetails

        public void warnAndDebugDetails​(java.lang.String message,
                                        java.lang.Object... args)
      • trace

        public void trace​(java.lang.String message,
                          java.lang.Object... args)
      • all

        public void all​(java.lang.String message,
                        java.lang.Object... args)
      • isDebugEnabled

        public boolean isDebugEnabled()
      • isWarnEnabled

        public boolean isWarnEnabled()
      • isInfoEnabled

        public boolean isInfoEnabled()
      • isTraceEnabled

        public boolean isTraceEnabled()