public class org.apache.juli.AsyncFileHandler extends org.apache.juli.FileHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.juli.AsyncFileHandler
  super_class: org.apache.juli.FileHandler
{
  public static final int OVERFLOW_DROP_LAST;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int OVERFLOW_DROP_FIRST;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  public static final int OVERFLOW_DROP_FLUSH;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  public static final int OVERFLOW_DROP_CURRENT;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  public static final int DEFAULT_OVERFLOW_DROP_TYPE;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int DEFAULT_MAX_RECORDS;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 10000

  public static final int DEFAULT_LOGGER_SLEEP_TIME;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1000

  public static final int OVERFLOW_DROP_TYPE;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final int MAX_RECORDS;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final int LOGGER_SLEEP_TIME;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  protected static final java.util.concurrent.LinkedBlockingDeque<org.apache.juli.AsyncFileHandler$LogEntry> queue;
    descriptor: Ljava/util/concurrent/LinkedBlockingDeque;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/LinkedBlockingDeque<Lorg/apache/juli/AsyncFileHandler$LogEntry;>;

  protected static final org.apache.juli.AsyncFileHandler$LoggerThread logger;
    descriptor: Lorg/apache/juli/AsyncFileHandler$LoggerThread;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  protected volatile boolean closed;
    descriptor: Z
    flags: (0x0044) ACC_PROTECTED, ACC_VOLATILE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 53
            ldc "org.apache.juli.AsyncOverflowDropType"
         1: .line 54
            iconst_1
            invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
         2: .line 53
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
         3: .line 52
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            putstatic org.apache.juli.AsyncFileHandler.OVERFLOW_DROP_TYPE:I
         4: .line 56
            ldc "org.apache.juli.AsyncMaxRecordCount"
         5: .line 57
            sipush 10000
            invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
         6: .line 56
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
         7: .line 55
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            putstatic org.apache.juli.AsyncFileHandler.MAX_RECORDS:I
         8: .line 59
            ldc "org.apache.juli.AsyncLoggerPollInterval"
         9: .line 60
            sipush 1000
            invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
        10: .line 59
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
        11: .line 58
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            putstatic org.apache.juli.AsyncFileHandler.LOGGER_SLEEP_TIME:I
        12: .line 63
            new java.util.concurrent.LinkedBlockingDeque
            dup
            getstatic org.apache.juli.AsyncFileHandler.MAX_RECORDS:I
            invokespecial java.util.concurrent.LinkedBlockingDeque.<init>:(I)V
        13: .line 62
            putstatic org.apache.juli.AsyncFileHandler.queue:Ljava/util/concurrent/LinkedBlockingDeque;
        14: .line 65
            new org.apache.juli.AsyncFileHandler$LoggerThread
            dup
            invokespecial org.apache.juli.AsyncFileHandler$LoggerThread.<init>:()V
            putstatic org.apache.juli.AsyncFileHandler.logger:Lorg/apache/juli/AsyncFileHandler$LoggerThread;
        15: .line 68
            getstatic org.apache.juli.AsyncFileHandler.logger:Lorg/apache/juli/AsyncFileHandler$LoggerThread;
            invokevirtual org.apache.juli.AsyncFileHandler$LoggerThread.start:()V
        16: .line 69
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.apache.juli.AsyncFileHandler this
         0: .line 74
            aload 0 /* this */
            aconst_null
            aconst_null
            aconst_null
            invokespecial org.apache.juli.AsyncFileHandler.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
         1: .line 75
            return
        end local 0 // org.apache.juli.AsyncFileHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/juli/AsyncFileHandler;

  public void <init>(java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.apache.juli.AsyncFileHandler this
        start local 1 // java.lang.String directory
        start local 2 // java.lang.String prefix
        start local 3 // java.lang.String suffix
         0: .line 78
            aload 0 /* this */
            aload 1 /* directory */
            aload 2 /* prefix */
            aload 3 /* suffix */
            aconst_null
            invokespecial org.apache.juli.AsyncFileHandler.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;)V
         1: .line 79
            return
        end local 3 // java.lang.String suffix
        end local 2 // java.lang.String prefix
        end local 1 // java.lang.String directory
        end local 0 // org.apache.juli.AsyncFileHandler this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lorg/apache/juli/AsyncFileHandler;
            0    2     1  directory  Ljava/lang/String;
            0    2     2     prefix  Ljava/lang/String;
            0    2     3     suffix  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      directory  
      prefix     
      suffix     

  public void <init>(java.lang.String, java.lang.String, java.lang.String, java.lang.Integer);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // org.apache.juli.AsyncFileHandler this
        start local 1 // java.lang.String directory
        start local 2 // java.lang.String prefix
        start local 3 // java.lang.String suffix
        start local 4 // java.lang.Integer maxDays
         0: .line 82
            aload 0 /* this */
            aload 1 /* directory */
            aload 2 /* prefix */
            aload 3 /* suffix */
            aload 4 /* maxDays */
            invokespecial org.apache.juli.FileHandler.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;)V
         1: .line 71
            aload 0 /* this */
            iconst_0
            putfield org.apache.juli.AsyncFileHandler.closed:Z
         2: .line 83
            aload 0 /* this */
            invokevirtual org.apache.juli.AsyncFileHandler.open:()V
         3: .line 84
            return
        end local 4 // java.lang.Integer maxDays
        end local 3 // java.lang.String suffix
        end local 2 // java.lang.String prefix
        end local 1 // java.lang.String directory
        end local 0 // org.apache.juli.AsyncFileHandler this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lorg/apache/juli/AsyncFileHandler;
            0    4     1  directory  Ljava/lang/String;
            0    4     2     prefix  Ljava/lang/String;
            0    4     3     suffix  Ljava/lang/String;
            0    4     4    maxDays  Ljava/lang/Integer;
    MethodParameters:
           Name  Flags
      directory  
      prefix     
      suffix     
      maxDays    

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.juli.AsyncFileHandler this
         0: .line 88
            aload 0 /* this */
            getfield org.apache.juli.AsyncFileHandler.closed:Z
            ifeq 2
         1: .line 89
            return
         2: .line 91
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.apache.juli.AsyncFileHandler.closed:Z
         3: .line 92
            aload 0 /* this */
            invokespecial org.apache.juli.FileHandler.close:()V
         4: .line 93
            return
        end local 0 // org.apache.juli.AsyncFileHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/apache/juli/AsyncFileHandler;

  protected void open();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.juli.AsyncFileHandler this
         0: .line 97
            aload 0 /* this */
            getfield org.apache.juli.AsyncFileHandler.closed:Z
            ifne 2
         1: .line 98
            return
         2: .line 100
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield org.apache.juli.AsyncFileHandler.closed:Z
         3: .line 101
            aload 0 /* this */
            invokespecial org.apache.juli.FileHandler.open:()V
         4: .line 102
            return
        end local 0 // org.apache.juli.AsyncFileHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/apache/juli/AsyncFileHandler;

  public void publish(java.util.logging.LogRecord);
    descriptor: (Ljava/util/logging/LogRecord;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // org.apache.juli.AsyncFileHandler this
        start local 1 // java.util.logging.LogRecord record
         0: .line 107
            aload 0 /* this */
            aload 1 /* record */
            invokevirtual org.apache.juli.AsyncFileHandler.isLoggable:(Ljava/util/logging/LogRecord;)Z
            ifne 2
         1: .line 108
            return
         2: .line 112
      StackMap locals:
      StackMap stack:
            aload 1 /* record */
            invokevirtual java.util.logging.LogRecord.getSourceMethodName:()Ljava/lang/String;
            pop
         3: .line 113
            new org.apache.juli.AsyncFileHandler$LogEntry
            dup
            aload 1 /* record */
            aload 0 /* this */
            invokespecial org.apache.juli.AsyncFileHandler$LogEntry.<init>:(Ljava/util/logging/LogRecord;Lorg/apache/juli/AsyncFileHandler;)V
            astore 2 /* entry */
        start local 2 // org.apache.juli.AsyncFileHandler$LogEntry entry
         4: .line 114
            iconst_0
            istore 3 /* added */
        start local 3 // boolean added
         5: .line 116
            goto 14
         6: .line 117
      StackMap locals: org.apache.juli.AsyncFileHandler$LogEntry int
      StackMap stack:
            getstatic org.apache.juli.AsyncFileHandler.OVERFLOW_DROP_TYPE:I
            tableswitch { // 1 - 4
                    1: 7
                    2: 9
                    3: 11
                    4: 13
              default: 14
          }
         7: .line 120
      StackMap locals:
      StackMap stack:
            getstatic org.apache.juli.AsyncFileHandler.queue:Ljava/util/concurrent/LinkedBlockingDeque;
            invokevirtual java.util.concurrent.LinkedBlockingDeque.pollLast:()Ljava/lang/Object;
            pop
         8: .line 121
            goto 14
         9: .line 125
      StackMap locals:
      StackMap stack:
            getstatic org.apache.juli.AsyncFileHandler.queue:Ljava/util/concurrent/LinkedBlockingDeque;
            invokevirtual java.util.concurrent.LinkedBlockingDeque.pollFirst:()Ljava/lang/Object;
            pop
        10: .line 126
            goto 14
        11: .line 129
      StackMap locals:
      StackMap stack:
            getstatic org.apache.juli.AsyncFileHandler.queue:Ljava/util/concurrent/LinkedBlockingDeque;
            aload 2 /* entry */
            ldc 1000
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual java.util.concurrent.LinkedBlockingDeque.offer:(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Z
            istore 3 /* added */
        12: .line 130
            goto 14
        13: .line 133
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 3 /* added */
        14: .line 116
      StackMap locals:
      StackMap stack:
            iload 3 /* added */
            ifne 17
            getstatic org.apache.juli.AsyncFileHandler.queue:Ljava/util/concurrent/LinkedBlockingDeque;
            aload 2 /* entry */
            invokevirtual java.util.concurrent.LinkedBlockingDeque.offer:(Ljava/lang/Object;)Z
            ifeq 6
        15: .line 138
            goto 17
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        16: pop
        17: .line 143
      StackMap locals:
      StackMap stack:
            return
        end local 3 // boolean added
        end local 2 // org.apache.juli.AsyncFileHandler$LogEntry entry
        end local 1 // java.util.logging.LogRecord record
        end local 0 // org.apache.juli.AsyncFileHandler this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   18     0    this  Lorg/apache/juli/AsyncFileHandler;
            0   18     1  record  Ljava/util/logging/LogRecord;
            4   18     2   entry  Lorg/apache/juli/AsyncFileHandler$LogEntry;
            5   18     3   added  Z
      Exception table:
        from    to  target  type
           5    15      16  Class java.lang.InterruptedException
    MethodParameters:
        Name  Flags
      record  

  protected void publishInternal(java.util.logging.LogRecord);
    descriptor: (Ljava/util/logging/LogRecord;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.juli.AsyncFileHandler this
        start local 1 // java.util.logging.LogRecord record
         0: .line 146
            aload 0 /* this */
            aload 1 /* record */
            invokespecial org.apache.juli.FileHandler.publish:(Ljava/util/logging/LogRecord;)V
         1: .line 147
            return
        end local 1 // java.util.logging.LogRecord record
        end local 0 // org.apache.juli.AsyncFileHandler this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/apache/juli/AsyncFileHandler;
            0    2     1  record  Ljava/util/logging/LogRecord;
    MethodParameters:
        Name  Flags
      record  
}
SourceFile: "AsyncFileHandler.java"
NestMembers:
  org.apache.juli.AsyncFileHandler$LogEntry  org.apache.juli.AsyncFileHandler$LoggerThread
InnerClasses:
  protected LogEntry = org.apache.juli.AsyncFileHandler$LogEntry of org.apache.juli.AsyncFileHandler
  protected LoggerThread = org.apache.juli.AsyncFileHandler$LoggerThread of org.apache.juli.AsyncFileHandler