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 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, ∼7146🔥, 0💬
Popular Posts:
JDK 17 jdk.javadoc.jmod is the JMOD file for JDK 17 Java Document tool, which can be invoked by the ...
JAX-WS is an API for building web services and clients. It is the next generation Web Services API r...
JDK 11 jdk.xml.dom.jmod is the JMOD file for JDK 11 XML DOM module. JDK 11 XML DOM module compiled c...
What Is mail.jar of JavaMail 1.3? I got the JAR file from javamail-1_3.zip. mail.jar in javamail-1_3...
JDK 11 jdk.jshell.jmod is the JMOD file for JDK 11 JShell tool, which can be invoked by the "jshell"...