log4j 2读取配置文件的三种方法

2023-11-12

log4j 2读取配置文件的三种方法。

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

 
  1. package com.herman.test;

  2.  
  3. import java.io.File;

  4. import java.io.FileInputStream;

  5. import java.net.URL;

  6.  
  7. import org.apache.logging.log4j.LogManager;

  8. import org.apache.logging.log4j.Logger;

  9. import org.apache.logging.log4j.core.config.ConfigurationSource;

  10. import org.apache.logging.log4j.core.config.Configurator;

  11.  
  12. public class ConfigTest {

  13.  
  14. private static Logger logger = LogManager.getLogger(ConfigTest.class);

  15. /**

  16. * log4j 2读取配置文件

  17. * log4j 2读取的配置文件可以分为三类:src下的配置文件、绝对路径的配置文件、相对路径的配置文件

  18. */

  19.  
  20. //第一类 加载src下的配置文件

  21. public static void test0(){

  22. //src下的配置文件会默认的被log4j的框架加载,我们就不显示的加载了

  23. //直接测试

  24. logger.info("我打印了.......");

  25. //输出内容

  26. //2014-09-01 15:49:30,229 INFO [main] test.ConfigTest (ConfigTest.java:18) - 我打印了.......

  27. }

  28.  
  29. //第二类 绝对路径的配置文件

  30. public static void test1(){

  31. //我们将log4j2.xml放在D盘下

  32. //这是需要手动的加载

  33. //绝对路径配置文件

  34. ConfigurationSource source;

  35. try {

  36. //方法1 使用 public ConfigurationSource(InputStream stream) throws IOException 构造函数

  37. source = new ConfigurationSource(new FileInputStream("D:\\log4j2.xml"));

  38.  
  39. //方法2 使用 public ConfigurationSource(InputStream stream, File file)构造函数

  40. File config=new File("D:\\log4j2.xml");

  41. source = new ConfigurationSource(new FileInputStream(config),config);

  42.  
  43. //方法3 使用 public ConfigurationSource(InputStream stream, URL url) 构造函数

  44. String path="D:\\log4j2.xml";

  45. source = new ConfigurationSource(new FileInputStream(path),new File(path).toURL());

  46.  
  47. //source.setFile(new File("D:\log4j2.xml"));

  48. //source.setInputStream(new FileInputStream("D:\log4j2.xml"));

  49. Configurator.initialize(null, source);

  50. Logger logger = LogManager.getLogger(ConfigTest.class.getName());

  51. logger.trace("trace...");

  52. logger.debug("debug...");

  53. logger.info("info...");

  54. logger.warn("warn...");

  55. logger.error("error...");

  56. logger.fatal("fatal...");

  57. //一下是运行效果

  58. /*2014-09-01 16:03:07,331 DEBUG [main] test.ConfigTest (ConfigTest.java:42) - debug...

  59. 2014-09-01 16:03:07,331 INFO [main] test.ConfigTest (ConfigTest.java:43) - info...

  60. 2014-09-01 16:03:07,331 WARN [main] test.ConfigTest (ConfigTest.java:44) - warn...

  61. 2014-09-01 16:03:07,331 ERROR [main] test.ConfigTest (ConfigTest.java:45) - error...

  62. 2014-09-01 16:03:07,331 FATAL [main] test.ConfigTest (ConfigTest.java:46) - fatal...*/

  63. } catch (Exception e) {

  64. e.printStackTrace();

  65. }

  66. }

  67.  
  68. //第三类 相对路径的配置文件加载

  69. public static void test2(){

  70. //这里需要注意路径中不要出现中文和空格,如果存在中文,请使用url转码

  71. ConfigurationSource source;

  72. try {

  73. //方法1 使用getResource()

  74. String path="/com/herman/config/log4j2.xml";

  75. URL url=ConfigTest.class.getResource(path);

  76. source = new ConfigurationSource(new FileInputStream(new File(url.getPath())),url);

  77. Configurator.initialize(null, source);

  78.  
  79. //方法2 使用System.getProperty

  80. String config=System.getProperty("user.dir");

  81. source = new ConfigurationSource(new FileInputStream(config+"\\src\\com\\herman\\config\\log4j2.xml"));

  82. Configurator.initialize(null, source);

  83.  
  84. //输出内容

  85. /*2014-09-01 16:32:19,746 DEBUG [main] test.ConfigTest (ConfigTest.java:53) - debug...

  86. 2014-09-01 16:32:19,746 INFO [main] test.ConfigTest (ConfigTest.java:54) - info...

  87. 2014-09-01 16:32:19,746 WARN [main] test.ConfigTest (ConfigTest.java:55) - warn...

  88. 2014-09-01 16:32:19,746 ERROR [main] test.ConfigTest (ConfigTest.java:56) - error...

  89. 2014-09-01 16:32:19,746 FATAL [main] test.ConfigTest (ConfigTest.java:57) - fatal...*/

  90. } catch (Exception e) {

  91. e.printStackTrace();

  92. }

  93. }

  94.  
  95. public static void main(String[] args) {

  96. //test0();

  97. //test1();

  98. test2();

  99. }

  100. }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

log4j 2读取配置文件的三种方法 的相关文章

随机推荐

  • opencv从内存缓冲区中读取图像数据

    1 从内存中加载图像数据 s Image Info stDispImgInfo spImgInfo gt m stDispInfo cv InputArray pic arr stDispImgInfo pImageBuf nWidth n
  • 如何ping一个网段下的所有IP地址,并保存返回结果

    循环的ping一个网段的所有IP地址 for L i in 1 1 255 do ping n 1 w 60 192 168 1 i find 回复 gt gt d pingall txt n 表示一次ping几次 w 表示一次ping60
  • 稳定性和高可用如何保障?一手测评华为云网站高可用解决方案

    一 前言 在如今科技高速发展的时代 几乎每个企业都依赖互联网 离不开互联网 很多企业的业务也都依托于互联网 比如我们熟知的电商 股市 直播 甚至是用于乘坐地铁 公交买票过闸的APP 如今可以说是一个互联网时代的完全体 但你们是否想过一个问题
  • 大神之路-起始篇

    欢迎关注 WeiyiGeek 公众号 设为 星标 每天带你 基础入门 到 进阶实践 再到 放弃学习 涉及 网络安全运维 应用开发 物联网IOT 学习路径 个人感悟 等知识 花开堪折直须折 莫待无花空折枝 文章目录 第 4 部分 计算机软件与
  • k8s学习(四) k8s使用nodeport方式配置service对外暴露服务

    Pod是有生命周期的 使用凡人皆有一死来描述pod很贴切 当一个工作节点 node 销毁时 节点上运行的pods也会被销毁 ReplicationController会动态地在其他节点上创建Pod来保持应用程序的运行 每一个Pod都有一个独
  • IDEA的作用

    IDEA IntelliJ IDEA 是一款由 JetBrains 开发的 Java 集成开发环境 IDE 它不仅支持 Java 开发 还支持多种其他编程语言和框架 包括 Kotlin Scala Groovy Android Spring
  • 【Linux运维】Ubuntu Server的无密码开机自动登录

    需求 最近我们在开发一个基于树莓派的小盒子 我们会采购一些树莓派 装好外盒 装好arm版本的 Ubuntu Server 20 04 系统 并且装上我们开发的配套软件 对接我们云端的服务 最终把小盒子卖给用户并提供一些收费的服务 我们在安装
  • ORACLE如何实现行转列

    可通过正则截取实现 例如下图 将 1 2 字符串通过 截取 分为两行数据 Select Regexp Substr 1 2 1 Level As SKU From Dual Connect By Regexp Substr 1 2 1 Le
  • 2022年安全员-C证操作证考试题库及在线模拟考试

    题库来源 安全生产模拟考试一点通公众号小程序 2022安全员 C证理论题库系安全员 C证全部考试题库上机考试练习题 2022年安全员 C证操作证考试题库及在线模拟考试根据安全员 C证最新教材汇编 安全员 C证考试模拟题随时根据安全生产模拟考
  • 一、robotframework 安装

    测试环境 windows 安装前提 已安装python robotframework基于python环境 python安装过程略过 安装的软件参考的这篇博文robot framework自动化测试参考手册 安装python库 安装robot
  • Linux下静态库生成和使用

    一 静态库概念 1 库是预编译的目标文件 object files 的集合 它们可以被链接进程序 静态库以后缀为 a 的特殊的存档 archive file 存储 2 标准系统库可在目录 usr lib与 lib中找到 比如 在类Unix系
  • layui原生框架下,展示、替换图片(修改页面)

    最终页面效果如下 由于图片没有资源路径 所以没有展示出来 图片展示可以忽略 代码如下 div class layui form item div
  • JDK的安装及配置详细图文教程(win10)

    JDK的下载 进入官网 选择Products下的Software下的java 官网 下拉 找到java SE页面并选择Oracle JDK 进入后选择JDK Download 然后就会进入到jdk最新版本的下载界面 选择系统对应的下载安装包
  • Linux创建用户并修改shell类型

    base root 57beff3260ef sudo su test exit base root 57beff3260ef apt get install zsh base root 57beff3260ef echo SHELL bi
  • react html 显示,react如何控制元素的显示与隐藏功能?

    react如何控制元素显示与隐藏 在vue中常用v if和v show指令 react中用什么方法呢 下面本篇文章给大家介绍一下 有一定的参考价值 有需要的朋友可以参考一下 希望对大家有所帮助 下面说我知道的三种方法 1 通过 state
  • Python3内置模块

    1 os all functions from posix nt or ce e g unlink stat etc os name is either posix nt or ce os curdir is a string repres
  • jvm不同版本(jdk6、jdk7、jdk8)之间的class常量池、运行时常量池、字符串常量池与堆、方法区的种种关系

    这几天研究了一下JVM底层原理 其中的内存分配前前后后看了三天 感觉还是没太看透 先研究到这 做个阶段性的笔记 感兴趣的小伙伴们欢迎大家评论区共同讨论 查阅了各种博客 长篇大论 例证太多 不清晰 本文主要目的精简浓缩一下 感兴趣的去文中参考
  • 数据库报错1264错误

    数据库报错1264 php程序报错1264 这个原因有可能是字段长度不够 改变一下字段长度
  • Install Ubuntu 12.04 on Macbook pro Retina

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 Install rEFIt Download and mount the rEFIt 0 14 dmg disk image Double click on the r
  • log4j 2读取配置文件的三种方法

    log4j 2读取配置文件的三种方法 log4j 2读取的配置文件可以分为三类 src下的配置文件 绝对路径的配置文件 相对路径的配置文件 我们一一给例子 直接看代码 package com herman test import java