Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (102)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (322)
Collections:
Other Resources:
JDK 17 java.logging.jmod - Logging Module
 JDK 17 java.logging.jmod is the JMOD file for JDK 17 Logging module.
JDK 17 java.logging.jmod is the JMOD file for JDK 17 Logging module.
JDK 17 Logging module compiled class files are stored in \fyicenter\jdk-17.0.5\jmods\java.logging.jmod.
JDK 17 Logging module compiled class files are also linked and stored in the \fyicenter\jdk-17.0.5\lib\modules JImage file.
JDK 17 Logging module source code files are stored in \fyicenter\jdk-17.0.5\lib\src.zip\java.logging.
You can click and view the content of each source code file in the list below.
✍: FYIcenter
⏎ sun/util/logging/internal/LoggingProviderImpl.java
/*
 * Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */
package sun.util.logging.internal;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.ResourceBundle;
import java.util.function.Supplier;
import java.lang.System.LoggerFinder;
import java.lang.System.Logger;
import java.util.Objects;
import java.util.logging.LogManager;
import jdk.internal.logger.DefaultLoggerFinder;
import java.util.logging.LoggingPermission;
import sun.util.logging.PlatformLogger;
import sun.util.logging.PlatformLogger.ConfigurableBridge.LoggerConfiguration;
/**
 * This {@code LoggingProviderImpl} is the JDK internal implementation of the
 * {@link jdk.internal.logger.DefaultLoggerFinder} which is used by
 * the default implementation of the {@link Logger}
 * when no {@link LoggerFinder} is found
 * and {@code java.util.logging} is present.
 * When {@code java.util.logging} is present, the {@code LoggingProviderImpl}
 * is {@linkplain java.util.ServiceLoader#loadInstalled(Class) installed} as
 * an internal service provider, making it possible to use {@code java.util.logging}
 * as the backend for loggers returned by the default LoggerFinder implementation.
 * <p>
 * This implementation of {@link DefaultLoggerFinder} returns instances of
 * {@link java.lang.System.Logger} which
 * delegate to a wrapped instance of {@link java.util.logging.Logger
 * java.util.logging.Logger}.
 * <br>
 * Loggers returned by this class can therefore be configured by accessing
 * their wrapped implementation through the regular {@code java.util.logging}
 * APIs - such as {@link java.util.logging.LogManager java.util.logging.LogManager}
 * and {@link java.util.logging.Logger java.util.logging.Logger}.
 *
 * @apiNote Programmers are not expected to call this class directly.
 * Instead they should rely on the static methods defined by
 * {@link java.lang.System java.lang.System}.
 * <p>
 * To replace this default
 * {@code java.util.logging} backend, an application is expected to install
 * its own {@link java.lang.System.LoggerFinder}.
 *
 * @see java.lang.System.Logger
 * @see java.lang.System.LoggerFinder
 * @see sun.util.logging.PlatformLogger.Bridge
 * @see java.lang.System
 * @see jdk.internal.logger
 * @see jdk.internal.logger
 *
 */
public final class LoggingProviderImpl extends DefaultLoggerFinder {
    static final RuntimePermission LOGGERFINDER_PERMISSION =
                new RuntimePermission("loggerFinder");
    private static final LoggingPermission LOGGING_CONTROL_PERMISSION =
            new LoggingPermission("control", null);
    /**
     * Creates a new instance of LoggingProviderImpl.
     * @throws SecurityException if the calling code does not have the
     * {@code RuntimePermission("loggerFinder")}.
     */
    public LoggingProviderImpl() {
    }
    /**
     * A logger that delegates to a java.util.logging.Logger delegate.
     */
    static final class JULWrapper extends LoggerConfiguration
            implements System.Logger, PlatformLogger.Bridge,
                       PlatformLogger.ConfigurableBridge {
        private static final java.util.logging.Level[] spi2JulLevelMapping = {
                java.util.logging.Level.ALL,     // mapped from ALL
                java.util.logging.Level.FINER,   // mapped from TRACE
                java.util.logging.Level.FINE,    // mapped from DEBUG
                java.util.logging.Level.INFO,    // mapped from INFO
                java.util.logging.Level.WARNING, // mapped from WARNING
                java.util.logging.Level.SEVERE,  // mapped from ERROR
                java.util.logging.Level.OFF      // mapped from OFF
        };
        private static final java.util.logging.Level[] platform2JulLevelMapping = {
                java.util.logging.Level.ALL,     // mapped from ALL
                java.util.logging.Level.FINEST,  // mapped from FINEST
                java.util.logging.Level.FINER,   // mapped from FINER
                java.util.logging.Level.FINE,    // mapped from FINE
                java.util.logging.Level.CONFIG,  // mapped from CONFIG
                java.util.logging.Level.INFO,    // mapped from INFO
                java.util.logging.Level.WARNING, // mapped from WARNING
                java.util.logging.Level.SEVERE,  // mapped from SEVERE
                java.util.logging.Level.OFF      // mapped from OFF
        };
        private final java.util.logging.Logger julLogger;
        private JULWrapper(java.util.logging.Logger logger) {
            this.julLogger = logger;
        }
        @Override
        public String getName() {
            return julLogger.getName();
        }
        @Override
        public void log(sun.util.logging.PlatformLogger.Level level, String msg, Throwable throwable) {
            julLogger.log(toJUL(level), msg, throwable);
        }
        @Override
        public void log(sun.util.logging.PlatformLogger.Level level, String format, Object... params) {
            julLogger.log(toJUL(level), format, params);
        }
        @Override
        public void log(sun.util.logging.PlatformLogger.Level level, String msg) {
            julLogger.log(toJUL(level), msg);
        }
        @Override
        public void log(sun.util.logging.PlatformLogger.Level level, Supplier<String> msgSuppier) {
            julLogger.log(toJUL(level), msgSuppier);
        }
        @Override
        public void log(sun.util.logging.PlatformLogger.Level level, Throwable thrown, Supplier<String> msgSuppier) {
            julLogger.log(toJUL(level), thrown, msgSuppier);
        }
        @Override
        public void logrb(sun.util.logging.PlatformLogger.Level level, ResourceBundle bundle, String key, Throwable throwable) {
            julLogger.logrb(toJUL(level), bundle, key, throwable);
        }
        @Override
        public void logrb(sun.util.logging.PlatformLogger.Level level, ResourceBundle bundle, String key, Object... params) {
            julLogger.logrb(toJUL(level), bundle, key, params);
        }
        @Override
        public void logp(sun.util.logging.PlatformLogger.Level level, String sourceClass, String sourceMethod, String msg) {
            julLogger.logp(toJUL(level), sourceClass, sourceMethod, msg);
        }
        @Override
        public void logp(sun.util.logging.PlatformLogger.Level level, String sourceClass, String sourceMethod,
                Supplier<String> msgSupplier) {
            julLogger.logp(toJUL(level), sourceClass, sourceMethod, msgSupplier);
        }
        @Override
        public void logp(sun.util.logging.PlatformLogger.Level level, String sourceClass, String sourceMethod,
                String msg, Object... params) {
            julLogger.logp(toJUL(level), sourceClass, sourceMethod, msg, params);
        }
        @Override
        public void logp(sun.util.logging.PlatformLogger.Level level, String sourceClass, String sourceMethod,
                String msg, Throwable thrown) {
            julLogger.logp(toJUL(level), sourceClass, sourceMethod, msg, thrown);
        }
        @Override
        public void logp(sun.util.logging.PlatformLogger.Level level, String sourceClass, String sourceMethod,
                Throwable thrown, Supplier<String> msgSupplier) {
            julLogger.logp(toJUL(level), sourceClass, sourceMethod,
                    thrown, msgSupplier);
        }
        @Override
        public void logrb(sun.util.logging.PlatformLogger.Level level, String sourceClass, String sourceMethod,
                ResourceBundle bundle, String key, Object... params) {
            julLogger.logrb(toJUL(level), sourceClass, sourceMethod,
                    bundle, key, params);
        }
        @Override
        public void logrb(sun.util.logging.PlatformLogger.Level level, String sourceClass, String sourceMethod,
                ResourceBundle bundle, String key, Throwable thrown) {
            julLogger.logrb(toJUL(level), sourceClass, sourceMethod,
                    bundle, key, thrown);
        }
        @Override
        public  boolean isLoggable(sun.util.logging.PlatformLogger.Level level) {
            return julLogger.isLoggable(toJUL(level));
        }
        // -----------------------------------------------------------------
        // Generic methods taking a Level as parameter
        // -----------------------------------------------------------------
        @Override
        public boolean isLoggable(Level level) {
            return julLogger.isLoggable(toJUL(level));
        }
        @Override
        public void log(Level level, String msg) {
            julLogger.log(toJUL(level), msg);
        }
        @Override
        public void log(Level level,
                        Supplier<String> msgSupplier) {
            // We need to check for null here to satisfy the contract
            // of System.Logger - because the underlying implementation
            // of julLogger will check for it only if the level is
            // loggable
            Objects.requireNonNull(msgSupplier);
            julLogger.log(toJUL(level), msgSupplier);
        }
        @Override
        public void log(Level level, Object obj) {
            // We need to check for null here to satisfy the contract
            // of System.Logger - because the underlying implementation
            // of julLogger will check for it only if the level is
            // loggable
            Objects.requireNonNull(obj);
            julLogger.log(toJUL(level), () -> obj.toString());
        }
        @Override
        public void log(Level level,
                        String msg, Throwable thrown) {
            julLogger.log(toJUL(level), msg, thrown);
        }
        @Override
        public void log(Level level, Supplier<String> msgSupplier,
                        Throwable thrown) {
            // We need to check for null here to satisfy the contract
            // of System.Logger - because the underlying implementation
            // of julLogger will check for it only if the level is
            // loggable
            Objects.requireNonNull(msgSupplier);
            julLogger.log(toJUL(level), thrown, msgSupplier);
        }
        @Override
        public void log(Level level,
                        String format, Object... params) {
            julLogger.log(toJUL(level), format, params);
        }
        @Override
        public void log(Level level, ResourceBundle bundle,
                        String key, Throwable thrown) {
            julLogger.logrb(toJUL(level), bundle, key, thrown);
        }
        @Override
        public void log(Level level, ResourceBundle bundle,
                        String format, Object... params) {
            julLogger.logrb(toJUL(level), bundle, format, params);
        }
        static java.util.logging.Level toJUL(Level level) {
            if (level == null) return null;
            assert level.ordinal() < spi2JulLevelMapping.length;
            return spi2JulLevelMapping[level.ordinal()];
        }
        // ---------------------------------------------------------
        // Methods from PlatformLogger.Bridge
        // ---------------------------------------------------------
        @Override
        public boolean isEnabled() {
            return julLogger.getLevel() != java.util.logging.Level.OFF;
        }
        @Override
        public PlatformLogger.Level getPlatformLevel() {
            final java.util.logging.Level javaLevel = julLogger.getLevel();
            if (javaLevel == null) return null;
            try {
                return PlatformLogger.Level.valueOf(javaLevel.getName());
            } catch (IllegalArgumentException e) {
                return PlatformLogger.Level.valueOf(javaLevel.intValue());
            }
        }
        @Override
        public void setPlatformLevel(PlatformLogger.Level level) {
            // null is allowed here
            julLogger.setLevel(toJUL(level));
        }
        @Override
        public LoggerConfiguration getLoggerConfiguration() {
            return this;
        }
        static java.util.logging.Level toJUL(PlatformLogger.Level level) {
            // The caller will throw if null is invalid in its context.
            // There's at least one case where a null level is valid.
            if (level == null) return null;
            assert level.ordinal() < platform2JulLevelMapping.length;
            return platform2JulLevelMapping[level.ordinal()];
        }
        @Override
        public boolean equals(Object obj) {
            return (obj instanceof JULWrapper)
                    && obj.getClass() == this.getClass()
                    && ((JULWrapper)obj).julLogger == this.julLogger;
        }
        @Override
        public int hashCode() {
            return julLogger.hashCode();
        }
        // A JULWrapper is just a stateless thin shell over a JUL logger - so
        // for a given JUL logger, we could always return the same wrapper.
        //
        // This is an optimization which may - or may not - be worth the
        // trouble: if many classes use the same logger, and if each class
        // keeps a reference to that logger, then caching the wrapper will
        // be worthwhile. Otherwise, if each logger is only referred once,
        // then the cache will eat up more memory than would be necessary...
        //
        // Here is an example of how we could implement JULWrapper.of(...)
        // if we wanted to create at most one wrapper instance for each logger
        // instance:
        //
        //        static final WeakHashMap<JULWrapper, WeakReference<JULWrapper>>
        //                wrappers = new WeakHashMap<>();
        //
        //        static JULWrapper of(java.util.logging.Logger logger) {
        //
        //            // First access without synchronizing
        //            final JULWrapper candidate = new JULWrapper(logger);
        //            WeakReference<JULWrapper> ref = wrappers.get(candidate);
        //            JULWrapper found = ref.get();
        //
        //            // OK - we found it - lets return it.
        //            if (found != null) return found;
        //
        //            // Not found. Need to synchronize.
        //            synchronized (wrappers) {
        //                ref = wrappers.get(candidate);
        //                found = ref.get();
        //                if (found == null) {
        //                    wrappers.put(candidate, new WeakReference<>(candidate));
        //                    found = candidate;
        //                }
        //            }
        //            assert found != null;
        //            return found;
        //        }
        //
        // But given that it may end up eating more memory in the nominal case
        // (where each class that does logging has its own logger with the
        //  class name as logger name and stashes that logger away in a static
        //  field, thus making the cache redundant - as only one wrapper will
        //  ever be created anyway) - then we will simply return a new wrapper
        // for each invocation of JULWrapper.of(...) - which may
        // still prove more efficient in terms of memory consumption...
        //
        static JULWrapper of(java.util.logging.Logger logger) {
            return new JULWrapper(logger);
        }
    }
    /**
     * Creates a java.util.logging.Logger for the given module.
     * @param name the logger name.
     * @param module the module for which the logger should be created.
     * @return a Logger suitable for use in the given module.
     */
    @SuppressWarnings("removal")
    private static java.util.logging.Logger demandJULLoggerFor(final String name,
                                                               Module module) {
        final LogManager manager = LogManager.getLogManager();
        final SecurityManager sm = System.getSecurityManager();
        if (sm == null) {
            return logManagerAccess.demandLoggerFor(manager, name, module);
        } else {
            final PrivilegedAction<java.util.logging.Logger> pa =
                    () -> logManagerAccess.demandLoggerFor(manager, name, module);
            return AccessController.doPrivileged(pa, null, LOGGING_CONTROL_PERMISSION);
        }
    }
    /**
     * {@inheritDoc}
     *
     * @apiNote The logger returned by this method can be configured through
     * its {@linkplain java.util.logging.LogManager#getLogger(String)
     * corresponding java.util.logging.Logger backend}.
     *
     * @return {@inheritDoc}
     * @throws SecurityException if the calling code doesn't have the
     * {@code RuntimePermission("loggerFinder")}.
     */
    @Override
    protected Logger demandLoggerFor(String name, Module module) {
        @SuppressWarnings("removal")
        final SecurityManager sm = System.getSecurityManager();
        if (sm != null) {
            sm.checkPermission(LOGGERFINDER_PERMISSION);
        }
        return JULWrapper.of(demandJULLoggerFor(name,module));
    }
    public static interface LogManagerAccess {
        java.util.logging.Logger demandLoggerFor(LogManager manager,
                String name, Module module);
    }
    // Hook for tests
    public static LogManagerAccess getLogManagerAccess() {
        @SuppressWarnings("removal")
        final SecurityManager sm = System.getSecurityManager();
        if (sm != null) {
            sm.checkPermission(LOGGING_CONTROL_PERMISSION);
        }
        // Triggers initialization of accessJulLogger if not set.
        if (logManagerAccess == null) LogManager.getLogManager();
        return logManagerAccess;
    }
    private static volatile LogManagerAccess logManagerAccess;
    public static void setLogManagerAccess(LogManagerAccess accesLoggers) {
        @SuppressWarnings("removal")
        final SecurityManager sm = System.getSecurityManager();
        if (sm != null) {
            sm.checkPermission(LOGGING_CONTROL_PERMISSION);
        }
        logManagerAccess = accesLoggers;
    }
}
⏎ sun/util/logging/internal/LoggingProviderImpl.java
Or download all of them as a single archive file:
File name: java.logging-17.0.5-src.zip File size: 106791 bytes Release date: 2022-09-13 Download
⇒ JDK 17 java.management.jmod - Management Module
2023-09-23, ∼4709🔥, 0💬
Popular Posts:
JDK 11 java.desktop.jmod is the JMOD file for JDK 11 Desktop module. JDK 11 Desktop module compiled ...
JRE 5 sunjce_provider.jar is the JAR file for JRE 5 Sun JCE Provider, which provides implementations...
What Is XMLBeans xbean.jar 2.6.0? XMLBeans xbean.jar 2.6.0 is the JAR file for Apache XMLBeans 2.6.0...
Apache Avalon began in 1999 as the Java Apache Server Framework and in late 2002 separated from the ...
Apache Log4j 1.2 Bridge allows applications coded to use Log4j 1.2 API to use Log4j 2 instead. Bytec...