src/java.net.http/share/classes/jdk/internal/net/http/common/DebugLogger.java
branchhttp-client-branch
changeset 56429 d61066f546a7
parent 56371 5497ce426276
child 56437 f8b3f053cfbb
equal deleted inserted replaced
56428:3dbf8ee93b08 56429:d61066f546a7
    27 
    27 
    28 import java.io.PrintStream;
    28 import java.io.PrintStream;
    29 import java.util.Objects;
    29 import java.util.Objects;
    30 import java.util.ResourceBundle;
    30 import java.util.ResourceBundle;
    31 import java.util.function.Supplier;
    31 import java.util.function.Supplier;
    32 import java.lang.System.Logger;
       
    33 
    32 
    34 /**
    33 /**
    35  * A {@code System.Logger} that forwards all messages to an underlying
    34  * A {@code System.Logger} that forwards all messages to an underlying
    36  * {@code System.Logger}, after adding some decoration. The logger also has the
    35  * {@code System.Logger}, after adding some decoration. The logger also has the
    37  * ability to additionally send the logged messages to System.err or System.out,
    36  * ability to additionally send the logged messages to System.err or System.out,
    48 class DebugLogger implements Logger {
    47 class DebugLogger implements Logger {
    49     // deliberately not in the same subtree than standard loggers.
    48     // deliberately not in the same subtree than standard loggers.
    50     final static String HTTP_NAME  = "jdk.internal.httpclient.debug";
    49     final static String HTTP_NAME  = "jdk.internal.httpclient.debug";
    51     final static String WS_NAME  = "jdk.internal.httpclient.websocket.debug";
    50     final static String WS_NAME  = "jdk.internal.httpclient.websocket.debug";
    52     final static String HPACK_NAME = "jdk.internal.httpclient.hpack.debug";
    51     final static String HPACK_NAME = "jdk.internal.httpclient.hpack.debug";
    53     final static Logger HTTP = System.getLogger(HTTP_NAME);
    52     final static System.Logger HTTP = System.getLogger(HTTP_NAME);
    54     final static Logger WS = System.getLogger(WS_NAME);
    53     final static System.Logger WS = System.getLogger(WS_NAME);
    55     final static Logger HPACK = System.getLogger(HPACK_NAME);
    54     final static System.Logger HPACK = System.getLogger(HPACK_NAME);
    56     final static long START_NANOS = System.nanoTime();
    55     final static long START_NANOS = System.nanoTime();
    57 
    56 
    58     private final Supplier<String> dbgTag;
    57     private final Supplier<String> dbgTag;
    59     private final Level errLevel;
    58     private final Level errLevel;
    60     private final Level outLevel;
    59     private final Level outLevel;
    61     private final Logger logger;
    60     private final System.Logger logger;
    62     private final boolean debugOn;
    61     private final boolean debugOn;
    63     private final boolean traceOn;
    62     private final boolean traceOn;
    64 
    63 
    65     /**
    64     /**
    66      * Create a logger for debug traces.The logger should only be used
    65      * Create a logger for debug traces.The logger should only be used
    92      * @param errLevel The level above which messages will be also printed on
    91      * @param errLevel The level above which messages will be also printed on
    93      *               System.err (in addition to being forwarded to the internal logger).
    92      *               System.err (in addition to being forwarded to the internal logger).
    94      *
    93      *
    95      * @return A logger for HTTP internal debug traces
    94      * @return A logger for HTTP internal debug traces
    96      */
    95      */
    97     private DebugLogger(Logger logger,
    96     private DebugLogger(System.Logger logger,
    98                 Supplier<String> dbgTag,
    97                 Supplier<String> dbgTag,
    99                 Level outLevel,
    98                 Level outLevel,
   100                 Level errLevel) {
    99                 Level errLevel) {
   101         this.dbgTag = dbgTag;
   100         this.dbgTag = dbgTag;
   102         this.errLevel = errLevel;
   101         this.errLevel = errLevel;
   119                 || severity >= outLevel.getSeverity()
   118                 || severity >= outLevel.getSeverity()
   120                 || logger.isLoggable(level);
   119                 || logger.isLoggable(level);
   121     }
   120     }
   122 
   121 
   123     @Override
   122     @Override
       
   123     public boolean isOn() {
       
   124         return debugOn;
       
   125     }
       
   126 
       
   127     @Override
   124     public boolean isLoggable(Level level) {
   128     public boolean isLoggable(Level level) {
   125         // fast path, we assume these guys never change.
   129         // fast path, we assume these guys never change.
   126         // support only static configuration.
   130         // support only static configuration.
   127         if (level == Level.DEBUG) return debugOn;
   131         if (level == Level.DEBUG) return debugOn;
   128         if (level == Level.TRACE) return traceOn;
   132         if (level == Level.TRACE) return traceOn;