Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
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 (309)
Collections:
Other Resources:
Source Code for Apache Log4j API
Apache Log4j API
provides the interface that applications should code to and provides the adapter
components required for implementers to create a logging implementation.
Apache Log4j API is a required module to use Apache Log4j.
Bytecode (Java 8) for Apache Log4j API is provided in a separate JAR file like log4j-api-2.14.1.jar.
Source Code files for Apache Log4j API are provided in both binary packge like apache-log4j-2.14.1-bin.zip and source package like apache-log4j-2.14.1-src.zip. You can download them at Apache Log4j Website.
You can also browse Source Code files for Apache Log4j API 2.14.1 below.
✍: FYIcenter.com
⏎ org/apache/logging/log4j/spi/Provider.java
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache license, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the license for the specific language governing permissions and * limitations under the license. */ package org.apache.logging.log4j.spi; import java.lang.ref.WeakReference; import java.net.URL; import java.util.Properties; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.status.StatusLogger; /** * Model class for a Log4j 2 provider. The properties in this class correspond to the properties used in a * {@code META-INF/log4j-provider.properties} file. Note that this class is automatically created by Log4j and should * not be used by providers. */ public class Provider { /** * Property name to set for a Log4j 2 provider to specify the priority of this implementation. */ public static final String FACTORY_PRIORITY = "FactoryPriority"; /** * Property name to set to the implementation of {@link org.apache.logging.log4j.spi.ThreadContextMap}. */ public static final String THREAD_CONTEXT_MAP = "ThreadContextMap"; /** * Property name to set to the implementation of {@link org.apache.logging.log4j.spi.LoggerContextFactory}. */ public static final String LOGGER_CONTEXT_FACTORY = "LoggerContextFactory"; private static final Integer DEFAULT_PRIORITY = Integer.valueOf(-1); private static final Logger LOGGER = StatusLogger.getLogger(); private final Integer priority; private final String className; private final Class<? extends LoggerContextFactory> loggerContextFactoryClass; private final String threadContextMap; private final Class<? extends ThreadContextMap> threadContextMapClass; private final String versions; private final URL url; private final WeakReference<ClassLoader> classLoader; public Provider(final Properties props, final URL url, final ClassLoader classLoader) { this.url = url; this.classLoader = new WeakReference<>(classLoader); final String weight = props.getProperty(FACTORY_PRIORITY); priority = weight == null ? DEFAULT_PRIORITY : Integer.valueOf(weight); className = props.getProperty(LOGGER_CONTEXT_FACTORY); threadContextMap = props.getProperty(THREAD_CONTEXT_MAP); loggerContextFactoryClass = null; threadContextMapClass = null; versions = null; } public Provider(final Integer priority, final String versions, final Class<? extends LoggerContextFactory> loggerContextFactoryClass) { this(priority, versions, loggerContextFactoryClass, null); } public Provider(final Integer priority, final String versions, final Class<? extends LoggerContextFactory> loggerContextFactoryClass, final Class<? extends ThreadContextMap> threadContextMapClass) { this.url = null; this.classLoader = null; this.priority = priority; this.loggerContextFactoryClass = loggerContextFactoryClass; this.threadContextMapClass = threadContextMapClass; this.className = null; this.threadContextMap = null; this.versions = versions; } /** * Returns the Log4j API versions supported by the implementation. * @return A String containing the Log4j versions supported. */ public String getVersions() { return versions; } /** * Gets the priority (natural ordering) of this Provider. * * @return the priority of this Provider */ public Integer getPriority() { return priority; } /** * Gets the class name of the {@link org.apache.logging.log4j.spi.LoggerContextFactory} implementation of this * Provider. * * @return the class name of a LoggerContextFactory implementation */ public String getClassName() { if (loggerContextFactoryClass != null) { return loggerContextFactoryClass.getName(); } return className; } /** * Loads the {@link org.apache.logging.log4j.spi.LoggerContextFactory} class specified by this Provider. * * @return the LoggerContextFactory implementation class or {@code null} if there was an error loading it */ public Class<? extends LoggerContextFactory> loadLoggerContextFactory() { if (loggerContextFactoryClass != null) { return loggerContextFactoryClass; } if (className == null) { return null; } final ClassLoader loader = classLoader.get(); if (loader == null) { return null; } try { final Class<?> clazz = loader.loadClass(className); if (LoggerContextFactory.class.isAssignableFrom(clazz)) { return clazz.asSubclass(LoggerContextFactory.class); } } catch (final Exception e) { LOGGER.error("Unable to create class {} specified in {}", className, url.toString(), e); } return null; } /** * Gets the class name of the {@link org.apache.logging.log4j.spi.ThreadContextMap} implementation of this Provider. * * @return the class name of a ThreadContextMap implementation */ public String getThreadContextMap() { if (threadContextMapClass != null) { return threadContextMapClass.getName(); } return threadContextMap; } /** * Loads the {@link org.apache.logging.log4j.spi.ThreadContextMap} class specified by this Provider. * * @return the ThreadContextMap implementation class or {@code null} if there was an error loading it */ public Class<? extends ThreadContextMap> loadThreadContextMap() { if (threadContextMapClass != null) { return threadContextMapClass; } if (threadContextMap == null) { return null; } final ClassLoader loader = classLoader.get(); if (loader == null) { return null; } try { final Class<?> clazz = loader.loadClass(threadContextMap); if (ThreadContextMap.class.isAssignableFrom(clazz)) { return clazz.asSubclass(ThreadContextMap.class); } } catch (final Exception e) { LOGGER.error("Unable to create class {} specified in {}", threadContextMap, url.toString(), e); } return null; } /** * Gets the URL containing this Provider's Log4j details. * * @return the URL corresponding to the Provider {@code META-INF/log4j-provider.properties} file */ public URL getUrl() { return url; } @Override public String toString() { final StringBuilder result = new StringBuilder("Provider["); if (!DEFAULT_PRIORITY.equals(priority)) { result.append("priority=").append(priority).append(", "); } if (threadContextMap != null) { result.append("threadContextMap=").append(threadContextMap).append(", "); } else if (threadContextMapClass != null) { result.append("threadContextMapClass=").append(threadContextMapClass.getName()); } if (className != null) { result.append("className=").append(className).append(", "); } else if (loggerContextFactoryClass != null) { result.append("class=").append(loggerContextFactoryClass.getName()); } if (url != null) { result.append("url=").append(url); } final ClassLoader loader; if (classLoader == null || (loader = classLoader.get()) == null) { result.append(", classLoader=null(not reachable)"); } else { result.append(", classLoader=").append(loader); } result.append("]"); return result.toString(); } @Override public boolean equals(final Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } final Provider provider = (Provider) o; if (priority != null ? !priority.equals(provider.priority) : provider.priority != null) { return false; } if (className != null ? !className.equals(provider.className) : provider.className != null) { return false; } if (loggerContextFactoryClass != null ? !loggerContextFactoryClass.equals(provider.loggerContextFactoryClass) : provider.loggerContextFactoryClass != null) { return false; } return versions != null ? versions.equals(provider.versions) : provider.versions == null; } @Override public int hashCode() { int result = priority != null ? priority.hashCode() : 0; result = 31 * result + (className != null ? className.hashCode() : 0); result = 31 * result + (loggerContextFactoryClass != null ? loggerContextFactoryClass.hashCode() : 0); result = 31 * result + (versions != null ? versions.hashCode() : 0); return result; } }
⏎ org/apache/logging/log4j/spi/Provider.java
Or download all of them as a single archive file:
File name: log4j-api-2.14.1-sources.jar File size: 264773 bytes Release date: 2021-03-06 Download
⇒ Source Code for Apache Log4j Core Implementation
⇐ Downloading Apache Log4j Binary Package
2015-11-17, 23353👍, 0💬
Popular Posts:
Jetty provides an HTTP server, HTTP client, and javax.servlet container. These components are open s...
Apache Ant Source Code Files are inside the Apache Ant source package file like apache-ant-1.10.10-s...
GJT (Giant Java Tree) implementation of XML Pull Parser. JAR File Size and Download Location: File n...
JDK 11 java.sql.jmod is the JMOD file for JDK 11 SQL (Structured Query Language) module. JDK 11 SQL ...
How to run "jarsigner" command from JDK tools.jar file? "jarsigner" command allows you to digitally ...