前言:网上查了许多教程,写的不是很乱,就是很老的教程,有的一些方法都已经弃用了,比如entry(),无奈之下只能自己动手丰衣足食了,也借鉴了很多其他教程,感谢各位前辈!


准备:

Log42j的官网下载地址:Log4j2官网
Linux下载: apache-log4j-2.13.0-bin.tar.gz
Windows下载:apache-log4j-2.13.0-bin.zip

第一步

1. 解压:apache-log4j-2.13.0-bin.zip;
2. 把其中的 log4j-api-2.13.0.jar 和 log4j-core-2.13.0.jar 两个jar包置于项目的根目录下,为了方便起见,建议在根目录下新建 lib 文件夹,把两个jar包放在里面;
3. 导进jar包:右键项目 -> properties -> Java Build Path -> Add External JARS

第二步

4. 在src类目录下新建一个配置文件:右键src -> New -> Other -> General -> File
文件名一定要是:log4j2.xml 否则会找不到相关配置路径,到时候打印日志就只能使用内置的配置形式了;
5. 接下来是重点,主要讲解配置文件log4j2.xml ,
    最终配置代码如下,附上了详细的注释,要了解请仔细看:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 对配置状态进行关闭,不把打印的细节在控制台中输出 -->
<!-- 该配置状态分为8个级别:高->低:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL -->
<Configuration status="OFF"><Appenders><!-- 在控制台打印日志 --><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} %-6level [%t] (%F:%L) - %msg%n"/></Console><!-- 日志输出分为6个级别:高->低:FATAL、ERROR、WARN、INFO、DEBUG、TRACE --><!-- Debug调试级别 --><!-- 这里根据你的个人习惯来写就好了,不细分的话写一个File就好了 --><!-- 输出日志文件,位置自动保存在项目根目录下的logs文件夹中 --><File name="MyDebugFile" fileName="logs/debug.log"><!-- 我这么写是为了把不同级别的日志筛选开来,便于查看 --><!-- Filter过滤器,以此设置日志级别,进行不同程度的日志区分,如果不这样细分,可把Filter去掉 --><!-- 比如这样设置:<ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>  --><Filters> <!-- 第一步 onMatch="DENY":匹配到info及更高级别就DENY过滤掉,其他的NEUTRAL保留 --><ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL"/> <!-- 第二步 onMatch="ACCEPT":匹配到debug及更高级别就ACCEPT保留,其他的DENY过滤掉 --><!-- 经过两步过滤,把debug以上的和以下的级别全部过滤,最终剩下debug级别 --><ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/> </Filters><!-- 对打印语句的格式进行设置,这个太多放在后面讲 --><PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} %-6level [%t] (%F:%L) - %msg%n"/>     </File><!-- Info信息级别 --><File name="MyInfoFile" fileName="logs/info.log"><Filters> <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/> <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/> </Filters><PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} %-6level [%t] (%F:%L) - %msg%n"/>     </File><!-- Warn警告级别 --><File name="MyWarnFile" fileName="logs/warn.log"><Filters> <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/> <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/> </Filters><PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} %-6level [%t] (%F:%L) - %msg%n"/>     </File><!-- Error错误级别 --><File name="MyErrorFile" fileName="logs/error.log"><Filters> <ThresholdFilter level="fatal" onMatch="DENY" onMismatch="NEUTRAL"/> <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/> </Filters><PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} %-6level [%t] (%F:%L) - %msg%n"/>     </File><!-- Fatal严重错误级别 --><File name="MyFatalFile" fileName="logs/fatal.log"><ThresholdFilter level="fatal" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} %-6level [%t] (%F:%L) - %msg%n"/>     </File></Appenders><!-- 定义Loggers,只有定义了Loggers并引入刚才的appender配置,配置才会生效 --> <Loggers><Root level="trace"><!-- Only events at DIAG level or more specific are sent to the console. --><AppenderRef ref="Console"/><AppenderRef ref="MyDebugFile"/><AppenderRef ref="MyInfoFile"/><AppenderRef ref="MyWarnFile"/><AppenderRef ref="MyErrorFile"/><AppenderRef ref="MyFatalFile"/></Root></Loggers>
</Configuration>

日志输出格式设置:%d{yyy-MM-dd HH:mm:ss.SSS} %-6level [%t] (%F:%L) - %msg%n"
格式一览表:
%d: 输出日志发生时间,可进行格式{yyy-MM-dd HH:mm:ss.SSS}设置,也可不用
%-6level: 输出的级别信息右对齐,总长度为6字符;正数为左对齐,看个人习惯
%t: 输出产生该日志事件的线程名
%F: 输出日志信息所属的类的类名
%l: 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
%msg: 输出日志信息
%n: 换行
%c: 输出日志信息所属的类的全名
%c: 输出自应用启动到输出该日志信息所耗费的毫秒数

第三步

进行打印测试.............


import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;public class Hero{String name;private static Logger logger = LogManager.getLogger(Hero.class.getName());public static void main(String[] args) throws{Hero teemo = new Hero();teemo.name = "teemo";     logger.debug("修改前的名字为:" + teemo.name);  teemo.name="提莫";logger.trace("修改后的名字为:" + teemo.name); logger.debug("修改后的名字为:" + teemo.name); logger.info("修改后的名字为:" + teemo.name); logger.warn("修改后的名字为:" + teemo.name); logger.error("修改后的名字为:" + teemo.name); logger.fatal("修改后的名字为:" + teemo.name);}}

控制台输出如下:

输出的日志文件:

Eclipse使用Log4j2的详细教程相关推荐

  1. eclipse怎么导入maven项目 eclipse导入maven项目详细教程

    转自:http://www.pc6.com/infoview/Article_114542.html Eclipse怎么导入maven项目一直是困扰着大量程序猿和刚上手小白们的问题,使用eclipse ...

  2. Eclipse开发Servlet项目详细教程!!!

    Eclipse开发Servlet项目详细教程 最近学校开设了Servlet课程 本篇文章作为学习记录 一来 自己记性不好 日后方便复习 二来 帮助更多的人入门Servlet 默认大家已经下载好了Tom ...

  3. Eclipse引入spring约束详细教程

    1.打开eclipse的window-preferences,搜索catalog. 2.点击add,点击File System,弹出页面选择spring-beans-4.2.xsd. 3.key ty ...

  4. java最新版安装教程_手把手教你安装Eclipse最新版本的详细教程 (非常详细,非常实用)...

    简介 首先声明此篇文章主要是针对测试菜鸟或者刚刚入门的小伙们或者童鞋们,大佬就没有必要往下看了. 写这篇文章的由来是因为后边要用这个工具,但是由于某些原因有部分小伙伴和童鞋们可能不会安装此工具,为了方 ...

  5. Python Eclipse+PyDec下载和安装教程(超级详细)

    Python Eclipse+PyDec下载和安装教程(超级详细) Eclipse 是著名的跨平台 IDE 工具,最初 Eclipse 是 IBM 支持开发的免费 Java 开发工具,2001 年 1 ...

  6. eclipse java 单步调试快捷键,Eclipse如何调试 Eclipse调试详细教程

    Eclipse作为开发者必备的一款常用软件,有许多开发者还不知道eclipse的debug功能该如何使用,debug模式简称为调试,可以自动编译出项目中的问题,小编今天就为大家带来了Eclipse使用 ...

  7. python3教程-终于清楚python3详细教程

    跟Java语言一样,python语言也有类的概念,直接使用class关键字定义python类.在python类,定义类的方法.然后直接使用类的初始化调用自身,获取相应的属性.以下是小编为你整理的pyt ...

  8. linux python2.7安装教程_Linux中RedHat下安装Python2.7开发环境的详细教程-学派吧-

    这篇文章主要为大家详细介绍了Linux RedHat下安装Python2.7.pip.ipython环境.eclipse和PyDev环境,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 Linux ...

  9. ubuntu18.04 安装qt5.12.8及环境配置的详细教程

    这篇文章主要介绍了ubuntu18.04 安装qt5.12.8及环境配置的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 环境 系统: ...

最新文章

  1. VR视觉健康标准在穗发布 专家:VR使用不要超过45分钟
  2. 深圳网络推广公司介绍几点新网站优化守则!
  3. STM32F103的PC13、PB3和PB4定义为普通IO口使用
  4. 摆脱困境:将环境特定的Cron表达式与@Scheduled批注一起使用
  5. oracle杀死进程时权限不足_在oracle中创建函数时权限不足
  6. python支持向量机_支持向量机(SVM)Python实现
  7. 【Python】用tkinter做一个采色器
  8. java中fmt标签库_jsp fmt标签详解
  9. Citrix 客户端登录出现wfshell.exe - 应用程序错误的解决方法
  10. Python爬虫之(七)数据提取-正则表达式
  11. 系统学习NLP(十九)--文本分类之FastText
  12. 工程学导论——心得体会
  13. 湘潭大学c语言大作业难过吗,C语言程序设计参考答案(湘大出版社)
  14. 300以内的蓝牙耳机哪款好?半入耳蓝牙耳机南卡和漫步者测评
  15. 部署本地thinkphp6(iis+php7)
  16. excel如何快速自动让空白单元格填充上一行内容
  17. 基于微信小程序的中国各地美食推荐平台小程序
  18. 引入字体—web网页里面嵌入想要的字体文件
  19. Myth源码解析系列之八- myth-admin事务管理后台
  20. Cocos2d-x3.1中使用万普平台实现Android平台广告添加

热门文章

  1. 重构--Introduce Parameter Object
  2. JUnit测试提示java.lang.Exception: No runnable methods
  3. excel按条件选择工作表_在Excel工作表中选择“实际使用范围”
  4. 1.初识elasticsearch
  5. 【MATLAB深度学习工具箱】学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的数据结构】
  6. APP开发者必备,主流安卓应用商店开发者公司账号注册
  7. word2vec加载异常解决:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes in position。。。
  8. cmd中通过winsat命令测试硬盘、CPU、内存、3d性能等
  9. JS ASCII码转换代码
  10. windows10专业版 docker desktop 安装失败