当前位置: 首页 > news >正文

Log4j2入门

转载自:http://www.cnblogs.com/hzhuxin/p/6406272.html

Log4j2 是 Log4j的升级版本,对其进行解压,可以看到以下几个jar包。

  •   log4j-1.2-api-2.8.jar
  •   log4j-api-2.8.jar
  •   log4j-core-2.8.jar
  •   log4j-jcl-2.8.jar
  •   log4j-slf4j-impl-2.8.jar
  •   log4j-to-slf4j-2.8.jar
  •   log4j-web-2.8.jar

先大致介绍下上述各个jar包的作用,开发普通JAVA项目时,只需依赖log4j-core-2.8.jar和log4j-api-2.8.jar  ,

开发web项目时还需要多依赖log4j-web.2.8.jar这个包。

log4j-slf4j-impl-2.8.jar和log4j-to-slf4j-2.8这两个jar用于适配slf4j这个日志门面框架,

log4j-jcl-2.8.jar用于适配commons-logging框架

log4j-1.2-api-2.8.jar用于log4j1.2版本的升级,用这个jar替换原有的log4j1.x的jar

 

下面详细介绍下log4j2基本使用,一般要在类路径下配置一个xml文件做为log4j2的配置文件,文件按照约定最好命名为log4j2.xml。log4j2默认会在classpath目录下寻找log4j.json、log4j.jsn、log4j2.xml等名称的文件,如果都没有找到,则会按默认配置输出,也就是输出到控制台。看一个最简单的配置文件的内容:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration status="WARN" monitorInterval="5"> <!-- status属性是用来指定log4j2自身的日志输出级别,monitorInterval属性值如果是非零值则会间隔这个值的秒数,去查看配置文件是否发生变化,如果变化则会动态加载新的配置 -->
<appenders>              <!-- appender是用来指定日志的输出地,我们用到的常用appender是两个,控制台和文件,分别配置如下 -->                  
<Console name="StandOut" target="SYSTEM_OUT"> <!-- SYSTME_OUT是log4j2里面定义的一个常量值,表示标准输出 -->
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> <!--指定了日志的布局输出格式,详细占位符的意义见下文 -->
</Console>
<Console name="StandError" target="SYSTEM_ERR"> <!-- SYSTME_ERR是log4j2里面定义的一个常量值,表示标准错误输出 -->
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
</Console> 
<File name="File" fileName="f:/logs/info.log"> 
    <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
</File> 
</appenders> 
<loggers> <!--日志器的定义-->
  <root level="TRACE"> 
    <appender-ref ref="Console"/> 
  </root> 
<logger name="org.huxin.study.demo.log4j2.App" level="INFO" additivity="false"> <!--它是 子Logger 是否继承 父Logger 的 输出源(appender) 的标志位。具体说,默认情况下子Logger会继承父Logger的appender,也就是说子Logger会在父Logger的appender里输出。若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。 -->
    <appender-ref ref="StandError"/> 
  </logger> 
</loggers> 
</configuration>

 

控制日志输出格式的常用占位符含义如下:

%d{HH:mm:ss.SSS} 表示输出到毫秒的时间

%t 输出当前线程名称

%-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0

%logger 输出logger名称,因为Root Logger没有名称,所以没有输出

%msg 日志文本

%n 换行

 

log4j定义的日志级别有:日志级别从低到高分为 ALL TRACE DEBUG INFO WARN ERROR FATAL OFF  ,某个日志器配置为某个级别,则低于这个级别的日志不会输出

 

日志器Logger:在使用log4j2时,我们一般都会通过代码先在类中获取一个Logger,然后调用其方法进行日志的打印,这个Logger就称为日志器。获取日志器的方法如下:

        Logger x = LogManager.getLogger("wombat");    //实际在使用时,一般通过类名去获取日志器

        日志器是有父子级别的概念的,log4j2默认提供了一个root的日志器做为所有日志器的父日志器。

                      每个日志器会对应一个具体的LoggerConfig,如果某个日志器没有相应的LoggerConfig,则会继承其父日志的LoggerConfig , 

转载于:https://www.cnblogs.com/faithforever/p/10675832.html

相关文章:

  • Notepad++插件安装和使用和打开大文件
  • 在SharePoint Server 2010中更改“我的网站”
  • 基数排序的理解和实现(Java)
  • P1962 斐波那契数列-题解(矩阵乘法扩展)
  • DotNetNuke模块开发(一)
  • LOJ104 普通平衡树
  • Airport Simulation (数据结构与算法 – 队列 / Queue 的应用)
  • 掌握 Dojo 工具包
  • js中用变量作为$()内id的值、动态获取id,及获取其下面的class元素
  • 读Google三大论文后感
  • 数据展现DataList控件(26)
  • [转帖] 使用 InstallShield 安装和卸载SQL Server 数据库
  • Spring Cloud微服务如何设计异常处理机制?
  • SpringCloud 之 Bus消息总线
  • 26步打造高访问量网站[经典]
  • DataBase in Android
  • ES6简单总结(搭配简单的讲解和小案例)
  • Java 最常见的 200+ 面试题:面试必备
  • Java读取Properties文件的六种方法
  • js递归,无限分级树形折叠菜单
  • LeetCode18.四数之和 JavaScript
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • orm2 中文文档 3.1 模型属性
  • React系列之 Redux 架构模式
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 关于for循环的简单归纳
  • 开源SQL-on-Hadoop系统一览
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 每天一个设计模式之命令模式
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 实现简单的正则表达式引擎
  • 算法---两个栈实现一个队列
  • 应用生命周期终极 DevOps 工具包
  • 用element的upload组件实现多图片上传和压缩
  • elasticsearch-head插件安装
  • Semaphore
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (转)【Hibernate总结系列】使用举例
  • (转)Linq学习笔记
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .Net IOC框架入门之一 Unity
  • .NET 解决重复提交问题
  • .NET的数据绑定
  • @JoinTable会自动删除关联表的数据
  • [ linux ] linux 命令英文全称及解释
  • [ 转载 ] SharePoint 资料
  • [1181]linux两台服务器之间传输文件和文件夹
  • [BT]BUUCTF刷题第9天(3.27)
  • [BZOJ5250][九省联考2018]秘密袭击(DP)