`

加载log4j 加载器

 
阅读更多

ehanmqi@CN00202245 /C/Ericsson/maworkspace_15/Hello/lib

$ pwd

/C/Ericsson/maworkspace_15/Hello/lib

 

ehanmqi@CN00202245 /C/Ericsson/maworkspace_15/Hello/lib

$ ls -l

total 265

-rw-r--r--    1 ehanmqi  Administ   489884 Jun 16 15:27 log4j-1.2.17.jar

-rw-r--r--    1 ehanmqi  Administ    41071 Jun 16 15:24 slf4j-api-1.7.21.jar

-rw-r--r--    1 ehanmqi  Administ     9988 Jun 16 15:24 slf4j-log4j12-1.7.21.jar

 

import java.io.File;

import java.net.URL;

import java.net.URLClassLoader;

import java.util.Enumeration;

import java.util.jar.JarEntry;

import java.util.jar.JarFile;

 

import org.slf4j.Logger;

 

 

 

 

public class TestClassLoader2 {

private static Logger logger;

/**

* @param args

*/

public static void main(String[] args) {

 

try {

 

System.out.println(TestClassLoader2.class.getClassLoader());

//URL   url = new File("C:/Users/ehanmqi/.m2/repository/org/slf4j/slf4j-log4j12/1.7.5/slf4j-log4j12-1.7.5.jar").toURI().toURL();

File file = new File("C:/Ericsson/maworkspace_15/Hello/lib");

URLClassLoader loader = loadJar(file.listFiles());

 

Class c = loader.loadClass("org.slf4j.LoggerFactory");

//c.getMethod("getLogger", Class.class).invoke(null, TestClassLoader2.class);

logger = (Logger) c.getMethod("getLogger", Class.class).invoke(null, TestClassLoader2.class);

logger.debug("sdfsf");

 

}catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

 

}

 

public static URLClassLoader loadJar(File[] fileArray) throws Exception{

URL[] urlarray = new URL[fileArray.length];

int i=0;

for(File f : fileArray){

URL   url =  f.toURI().toURL();

urlarray[i]=url;

i++;

}

 

 

URLClassLoader   loader = new URLClassLoader(urlarray, TestClassLoader2.class.getClassLoader());

//loader.loadClass("org.apache.log4j.net.JMSSink");

for(File f : fileArray){

JarFile jarfile = new JarFile(f);

Enumeration<JarEntry> jarEntry = jarfile.entries();

while(jarEntry.hasMoreElements()){

JarEntry  je = jarEntry.nextElement();

 

if(je.getName().endsWith(".class")){

//System.out.println(je.getName());

String classpath = je.getName().replaceAll("/", ".").replaceAll(".class", "");

if(!classpath.equals("org.apache.log4j.net.JMSSink")){

continue;

}else if(!classpath.equals("javax/mail/Authenticator".replace("/", "."))){

continue;

}

loader.loadClass(classpath);

 

}

}

 

}

 

return loader;

 

}

 

}

 

 

分享到:
评论

相关推荐

    log4j配置和加载方法

    ### Log4j配置与加载方法详解 Log4j是一款由Apache出品的日志记录工具,它提供了灵活的日志级别控制和多样化的日志输出方式,广泛应用于Java应用的开发中。本文将深入解析log4j的配置与加载机制,帮助开发者更好地...

    老生常谈Log4j和Log4j2的区别(推荐)

    Log4j想要生效,我们需要在web.xml中进行配置,以告诉工程去哪加载log4j的配置文件和定义一个扫描器。相比之下,Log4j2就比较简单,我们只需要把log4j2.xml文件放到工程的resource目录下就行了。 Log调用 Log4j和...

    SSM整合中的Log4j日志的配置详情

    在 SSM 整合项目中,需要在 web.xml 文件中指定 Log4j 配置文件的位置,以便 Spring 可以加载 Log4j 配置文件。下面是一个基本的 web.xml 配置: ``` &lt;listener-class&gt;org.springframework.web.util.Log4...

    tomcat8更换log4j记录日志

    3. 在Tomcat的`web.xml`配置文件中,可能需要配置一个`ContextLoaderListener`,以确保在应用程序启动时加载Log4j配置。 压缩包中的"**lib**"目录可能包含Log4j的必要依赖库,比如`log4j.jar`,这是运行Log4j的日志...

    log4j详细配置说明

    - **配置 web.xml**:在应用的 `web.xml` 文件中添加以下配置,以便在启动时加载 Log4j: ```xml &lt;listener-class&gt;com.apache.jakarta.log4j.Log4jInit&lt;/listener-class&gt; ``` 其中 `&lt;init-param&gt;` 用于指定...

    log4j 介绍

    如果需要自定义配置文件的路径,可以使用DOMConfigurator.configure()来加载log4j.xml文件,或者使用PropertyConfigurator.configure()来加载log4j.properties文件。不过,需要注意的是,目前Log4j 1.x版本的开发者...

    log4j与web.xml的配置

    - 接着,使用`&lt;listener&gt;`标签启动Log4j配置加载器: ```xml &lt;listener-class&gt;org.springframework.web.util.Log4jConfigListener ``` - 或者,如果使用的是Servlet 3.0及以上版本,可以使用以下配置: ``...

    log4j(二):动态配置日志输出路径

    在Web应用中,如使用的是Servlet环境,可以通过在`web.xml`中配置`ContextLoaderListener`来加载Log4j配置,同时,我们还可以创建一个Servlet,当接收到特定请求时,更新Log4j配置。 ```xml &lt;!-- web.xml 示例 --&gt; ...

    示范如何在android工程中使用log4j记录日志

    3. **初始化Log4j**:在Application类的onCreate方法中初始化Log4j,确保在使用日志之前完成配置加载: ```java @Override public void onCreate() { super.onCreate(); Log4jConfig.init(this); } ``` 4. *...

    log4j使用与java中log4j记录日志如何写入数据库

    1. **配置文件**:Log4j的配置文件通常是`log4j.properties`或`log4j.xml`,它定义了日志的级别(如DEBUG、INFO、WARN、ERROR、FATAL)、输出目的地(控制台、文件、数据库等)以及布局格式。 2. **日志类**:在...

    Log4j配置文件解析以及加载自己的配置文件.doc

    总结起来,Log4j配置文件的解析和加载是通过定义根日志器、Appender、Layout以及它们各自的属性来实现的。理解这些配置项的含义和用法,可以帮助我们更好地管理和定制日志输出,提高日志的可读性和分析效率。在实际...

    log4j-2.15.0-rc2.zip

    2. **删除潜在危险的类加载器**:2.15.0-rc2移除了可能导致恶意代码执行的类加载器,从而减少了攻击面。 3. **增强日志格式字符串验证**:加强了对日志格式字符串的检查,防止恶意输入绕过之前的防护措施。 4. **...

    log4j2用户指南

    - **Separate ClassLoaders**:使用不同的类加载器隔离日志配置。 - **Separate Contexts**:每个配置使用独立的 LoggerContext。 #### 15. Extending Log4j Log4j2 支持通过扩展机制增加新功能: - **Custom ...

    log4j案例代码

    在上面的代码中,首先通过`PropertyConfigurator.configure()`加载了Log4j的配置文件,然后通过`Logger.getLogger()`创建了一个日志记录器,最后使用不同级别的方法记录日志。 **5. 配置文件详解** `log4j....

    log4j 源码包 日志包 2.11.0

    Log4j 2.11.0引入了自动重加载配置的特性,使得在运行时修改配置文件无需重启应用即可生效。 4. **日志器与日志事件** 日志器是用户与Log4j交互的主要接口,通过Logger接口创建并管理日志事件。日志事件则封装了...

    JBOSS log4j 配置

    Log4j 有三个主要的组件:Loggers(记录器),Appenders(输出源)和 Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松的记录信息的类型和级别,并可以在...

    Log4J的配置文件

    Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。Log4j 框架是用 Java 语言编写的标准日志记录框架。通过配置,可以创建出Log4J的...

    log4j2 -2.11.1.zip

    Log4j2是Java日志记录框架的著名组件,它为开发者提供了强大的日志管理和分析功能。这个"Log4j2-2.11.1.zip"压缩包包含了该框架的2.11.1版本,这是一个稳定且广泛使用的版本。在本篇中,我们将深入探讨Log4j2的核心...

    如何在Java工程中使用Log4j

    要在Java工程中使用Log4j,首先需要下载Log4j的jar包,例如log4j-1.2.16.jar,然后将其加载到工程中去。在src源程序包中添加一个log4j.properties文件,用于配置Log4j的日志记录规则。以下是一个简单的log4j....

Global site tag (gtag.js) - Google Analytics