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 1.2.17
Apache Log4j provides the interface that applications should code to and provides the adapter components required for implementers to create a logging implementation.
Bytecode (Java 1.4) for Apache Log4j is provided in a JAR file like log4j-1.2.17.jar.
Source Code files for Apache Log4j are provided in both binary packge like log4j-1.2.17.zip and source package like log4j-1.2.17-sources.zip. You can download them at Apache Log4j Website.
You can also browse Source Code files for Apache Log4j 1.2.17 below.
✍: FYIcenter.com
⏎ org/apache/log4j/EnhancedThrowableRenderer.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.log4j; import org.apache.log4j.spi.ThrowableRenderer; import java.io.File; import java.lang.reflect.Method; import java.net.URL; import java.security.CodeSource; import java.util.HashMap; import java.util.Map; /** * Enhanced implementation of ThrowableRenderer. Uses Throwable.getStackTrace * if running on JDK 1.4 or later and delegates to DefaultThrowableRenderer.render * on earlier virtual machines. * * @since 1.2.16 */ public final class EnhancedThrowableRenderer implements ThrowableRenderer { /** * Throwable.getStackTrace() method. */ private Method getStackTraceMethod; /** * StackTraceElement.getClassName() method. */ private Method getClassNameMethod; /** * Construct new instance. */ public EnhancedThrowableRenderer() { try { Class[] noArgs = null; getStackTraceMethod = Throwable.class.getMethod("getStackTrace", noArgs); Class ste = Class.forName("java.lang.StackTraceElement"); getClassNameMethod = ste.getMethod("getClassName", noArgs); } catch(Exception ex) { } } /** * {@inheritDoc} */ public String[] doRender(final Throwable throwable) { if (getStackTraceMethod != null) { try { Object[] noArgs = null; Object[] elements = (Object[]) getStackTraceMethod.invoke(throwable, noArgs); String[] lines = new String[elements.length + 1]; lines[0] = throwable.toString(); Map classMap = new HashMap(); for(int i = 0; i < elements.length; i++) { lines[i+1] = formatElement(elements[i], classMap); } return lines; } catch(Exception ex) { } } return DefaultThrowableRenderer.render(throwable); } /** * Format one element from stack trace. * @param element element, may not be null. * @param classMap map of class name to location. * @return string representation of element. */ private String formatElement(final Object element, final Map classMap) { StringBuffer buf = new StringBuffer("\tat "); buf.append(element); try { String className = getClassNameMethod.invoke(element, (Object[]) null).toString(); Object classDetails = classMap.get(className); if (classDetails != null) { buf.append(classDetails); } else { Class cls = findClass(className); int detailStart = buf.length(); buf.append('['); try { CodeSource source = cls.getProtectionDomain().getCodeSource(); if (source != null) { URL locationURL = source.getLocation(); if (locationURL != null) { // // if a file: URL // if ("file".equals(locationURL.getProtocol())) { String path = locationURL.getPath(); if (path != null) { // // find the last file separator character // int lastSlash = path.lastIndexOf('/'); int lastBack = path.lastIndexOf(File.separatorChar); if (lastBack > lastSlash) { lastSlash = lastBack; } // // if no separator or ends with separator (a directory) // then output the URL, otherwise just the file name. // if (lastSlash <= 0 || lastSlash == path.length() - 1) { buf.append(locationURL); } else { buf.append(path.substring(lastSlash + 1)); } } } else { buf.append(locationURL); } } } } catch(SecurityException ex) { } buf.append(':'); Package pkg = cls.getPackage(); if (pkg != null) { String implVersion = pkg.getImplementationVersion(); if (implVersion != null) { buf.append(implVersion); } } buf.append(']'); classMap.put(className, buf.substring(detailStart)); } } catch(Exception ex) { } return buf.toString(); } /** * Find class given class name. * @param className class name, may not be null. * @return class, will not be null. * @throws ClassNotFoundException thrown if class can not be found. */ private Class findClass(final String className) throws ClassNotFoundException { try { return Thread.currentThread().getContextClassLoader().loadClass(className); } catch (ClassNotFoundException e) { try { return Class.forName(className); } catch (ClassNotFoundException e1) { return getClass().getClassLoader().loadClass(className); } } } }
⏎ org/apache/log4j/EnhancedThrowableRenderer.java
Or download all of them as a single archive file:
File name: log4j-1.2.17-sources.jar File size: 481200 bytes Release date: 2012-05-06 Download
⇒ Download and Install apache-log4j-1.2.15.zip
⇐ Download and Install log4j-1.2.17.zip
2015-12-14, 63526👍, 0💬
Popular Posts:
JDK 17 jdk.hotspot.agent.jmod is the JMOD file for JDK 17 Hotspot Agent module. JDK 17 Hotspot Agent...
JSP(tm) Standard Tag Library 1.1 implementation - Jakarta Taglibs hosts the Standard Taglib 1.1, an ...
commons-io-1.4.jar is the JAR file for Commons IO 1.4, which is a library of utilities to assist wit...
iText is an ideal library for developers looking to enhance web- and other applications with dynamic...
JDK 6 tools.jar is the JAR file for JDK 6 tools. It contains Java classes to support different JDK t...