log4j中配置日志文件存放的位置不一定在src下面,即根目录下。这个时候我们需要解决如何加载配置文件的问题。在log4j1.x中解决的方法就比较多了。如:PropertyConfigurator.configure();和DOMConfigurator.configure ();这两种方法读取。而在log4j2.x当中,这两个类都已经不存在了。这个时候我们该如何去加载配置文件呢?

答案也很简单,就是log4j2.x的版本给我提供了ConfigurationSource和Configurator这两个类。我们可以使用它们进行手动的加载任意位置的配置文件信息。

我就主要介绍三种方法:log4j 2读取配置文件的三种方法。

log4j 2读取的配置文件可以分为三类:src下的配置文件、绝对路径的配置文件、相对路径的配置文件。我们一一给例子。直接看代码:

package com.herman.test;  

import java.io.File;
import java.io.FileInputStream;
import java.net.URL; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.config.ConfigurationSource;
import org.apache.logging.log4j.core.config.Configurator; public class ConfigTest { private static Logger logger = LogManager.getLogger(ConfigTest.class);
/**
* log4j 2读取配置文件
* log4j 2读取的配置文件可以分为三类:src下的配置文件、绝对路径的配置文件、相对路径的配置文件
*/ //第一类 加载src下的配置文件
public static void test0(){
//src下的配置文件会默认的被log4j的框架加载,我们就不显示的加载了
//直接测试
logger.info("我打印了.......");
//输出内容
//2014-09-01 15:49:30,229 INFO [main] test.ConfigTest (ConfigTest.java:18) - 我打印了.......
} //第二类 绝对路径的配置文件
public static void test1(){
//我们将log4j2.xml放在D盘下
//这是需要手动的加载
//绝对路径配置文件
ConfigurationSource source;
try {
//方法1 使用 public ConfigurationSource(InputStream stream) throws IOException 构造函数
source = new ConfigurationSource(new FileInputStream("D:\\log4j2.xml")); //方法2 使用 public ConfigurationSource(InputStream stream, File file)构造函数
File config=new File("D:\\log4j2.xml");
source = new ConfigurationSource(new FileInputStream(config),config); //方法3 使用 public ConfigurationSource(InputStream stream, URL url) 构造函数
String path="D:\\log4j2.xml";
source = new ConfigurationSource(new FileInputStream(path),new File(path).toURL()); //source.setFile(new File("D:\log4j2.xml"));
//source.setInputStream(new FileInputStream("D:\log4j2.xml"));
Configurator.initialize(null, source);
Logger logger = LogManager.getLogger(ConfigTest.class.getName());
logger.trace("trace...");
logger.debug("debug...");
logger.info("info...");
logger.warn("warn...");
logger.error("error...");
logger.fatal("fatal...");
//一下是运行效果
/*2014-09-01 16:03:07,331 DEBUG [main] test.ConfigTest (ConfigTest.java:42) - debug...
2014-09-01 16:03:07,331 INFO [main] test.ConfigTest (ConfigTest.java:43) - info...
2014-09-01 16:03:07,331 WARN [main] test.ConfigTest (ConfigTest.java:44) - warn...
2014-09-01 16:03:07,331 ERROR [main] test.ConfigTest (ConfigTest.java:45) - error...
2014-09-01 16:03:07,331 FATAL [main] test.ConfigTest (ConfigTest.java:46) - fatal...*/
} catch (Exception e) {
e.printStackTrace();
}
} //第三类 相对路径的配置文件加载
public static void test2(){
//这里需要注意路径中不要出现中文和空格,如果存在中文,请使用url转码
ConfigurationSource source;
try {
//方法1 使用getResource()
String path="/com/herman/config/log4j2.xml";
URL url=ConfigTest.class.getResource(path);
source = new ConfigurationSource(new FileInputStream(new File(url.getPath())),url);
Configurator.initialize(null, source); //方法2 使用System.getProperty
String config=System.getProperty("user.dir");
source = new ConfigurationSource(new FileInputStream(config+"\\src\\com\\herman\\config\\log4j2.xml"));
Configurator.initialize(null, source); //输出内容
/*2014-09-01 16:32:19,746 DEBUG [main] test.ConfigTest (ConfigTest.java:53) - debug...
2014-09-01 16:32:19,746 INFO [main] test.ConfigTest (ConfigTest.java:54) - info...
2014-09-01 16:32:19,746 WARN [main] test.ConfigTest (ConfigTest.java:55) - warn...
2014-09-01 16:32:19,746 ERROR [main] test.ConfigTest (ConfigTest.java:56) - error...
2014-09-01 16:32:19,746 FATAL [main] test.ConfigTest (ConfigTest.java:57) - fatal...*/
} catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
//test0();
//test1();
test2();
}
}

Log4j 2.0读取配置文件的方法的更多相关文章

  1. Shell读取配置文件的方法

    参考:http://www.cnblogs.com/binbinjx/p/5680214.html 做批量软件安装自动化时,都喜欢用配置文件的方式改变参数,那怎么通过shell读取配置文件的配置呢?参 ...

  2. .net core 2.0 读取配置文件

    1.引用Microsoft.Extensions.Configuration2.在Startup中注入服务 public static IConfiguration Configuration { g ...

  3. 面试突击75:SpringBoot 有几种读取配置文件的方法?

    Spring Boot 中读取配置文件有以下 5 种方法: 使用 @Value 读取配置文件. 使用 @ConfigurationProperties 读取配置文件. 使用 Environment 读 ...

  4. java中读取配置文件的方法

    转自:http://blog.csdn.net/stypace/article/details/38414871 一.使用org.apache.commons.configuration 需要使用的是 ...

  5. shell 读取配置文件的方法

    原文地址:http://bbs.chinaunix.net/thread-3628456-1-1.html 总结地址:https://www.cnblogs.com/binbinjx/p/568021 ...

  6. Spring ClassPathXmlApplicationContext和FileSystemXmlApplicationContext读取配置文件的方法

    先说:ClassPathXmlApplicationContext 这个类,默认获取的是WEB-INF/classes/下的路径,也就是在myeclipse的src下的路径,所以用这个是获取不到WEB ...

  7. ASP .NET CORE 读取配置文件的方法

    老式的config文件在ASP.net core2.0中变成了appsettings.json,如果想要读取自定义配置,可以写如下代码 { "Logging": { "I ...

  8. java读取配置文件的方法

    1. Preferences类 这个主要是设置个人喜好.它的数据一般存在系统目录或是用户目录.还可以操作注册表. 2. Properties类 保存键值对.可以指定路径. 3. commons con ...

  9. java读取配置文件的几种方法

    java读取配置文件的几种方法 原文地址:http://hbcui1984.iteye.com/blog/56496         在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配 ...

随机推荐

  1. Tomcat version 6.0 only supports J2EE 1.2 ......

    在project的.setting folder下面,有个名为org.eclipse.wst.common.project.facet.core.xml的文件,里面配置有各种版本信息.此时,按照本机配 ...

  2. Linq分组操作之GroupBy,GroupJoin扩展方法源码分析

    Linq分组操作之GroupBy,GroupJoin扩展方法源码分析 一. GroupBy 解释: 根据指定的键选择器函数对序列中的元素进行分组,并且从每个组及其键中创建结果值. 查询表达式: var ...

  3. c#中关于协变性和逆变性(又叫抗变)帮助理解

    今天回忆了之前看的<深入理解C#>这本书中的泛型章节,其中对泛型的可变性的理解.泛型可变性分两种:协变和逆变.逆变也又称为抗变. 怎么理解这两个名词的意思: ①:协变即为在泛型接口类型中使 ...

  4. C#连接SQL server数据库

    C#连接SQL server数据库 创建一个Windows应用程序,在窗体中添加TextBox控件.Button控件.Label控件. private void button1_Click(objec ...

  5. leecode刷题(8)-- 两数之和

    leecode刷题(8)-- 两数之和 两数之和 描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输 ...

  6. PHP 性能优化一

    PHP性能优化?对于这个问题,我们首先要知道影响PHP的性能的原因是什么? 1.什么情况下会出现PHP性能问题? 1)PHP语法使用 不当(包括某些业务可以使用PHP本身自带的函数来处理) 2)使用P ...

  7. CSS3过渡效果 兼容IE6、IE7、IE8

    <style> .box{ width:120px;height:40px;background:yellowgreen;line-height:40px;transition:width ...

  8. 3,ThreadGroup 的使用场景以及用法

    1 一个大型任务,可分成多个独立的子线程并发进行,最后等待所有的子线程执行结束然后继续往下执行, 使用场景比如 要查找某个用户的最近三个月的通话记录,起 3 个子线程,分别查找最近三个月的记录,然后通 ...

  9. Laravel一些常用命令整理

    自动创建项目 laravel new || laravel new xxx || composer create-project --prefer-dist laravel/laravel blogc ...

  10. 北航软院2015级C#期末考试部分考题讲解

    洗洗睡了吧,我怎么知道明天的考试题目! 或者 你明年补考可以过来看看:) 晚安.