Log4j2 HelloWorld
Log4j2 使用教程
Log4j2 的好处就不在这里一一列举了,如果你搜了2,说明你对它一定有兴趣,并且想了解它,使用它。
一、下载log4j2 ,基本上你只需要导入下面两个jar包即可:
- log4j-api-2.11.0.jar
- log4j-core-2.11.0.jar
二、导入到你的项目中(Maven --> pom.xml):
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.0</version>
</dependency>
</dependencies>
三、成员变量:
我们知道,要在某个类中使用log4j记录日志,只需要声明以下的成员变量
private static Logger logger = LogManager.getLogger(Hello.class.getName());
1. 这里getLogger有一个参数指定的是这个logger的名称,这个名称在配置文件里面可是需要的。
2. 声明了Logger对象,我们就可以在代码中使用它了。
四、日志调用:
这里写一个Hello类,调用很简单,log4j的核心在配置文件上。
package com.ray.test;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
* Created by Ray on 2018/3/28 0028.
**/
public class Hello {
private static Logger logger = LogManager.getLogger(Hello.class.getName());
public static void main(String[] args) {
logger.trace("entry"); //开始时调用
logger.error("Did it again!"); //error级别的信息
logger.info("我是info信息"); //info级别的信息
logger.debug("我是debug信息"); //debug级别的信息
logger.warn("我是warn信息"); //warn级别的信息
logger.fatal("我是fatal信息"); //fatal级别的信息
logger.log(Level.DEBUG,"我是debug信息"); //指定Level类型的调用
logger.trace("exit"); //结束时调用
}
}
如果没有自定义配置文件,Hello这个类调用main方法,在控制台会输出下面的结果:
默认情况下,只有 >= ERROR 的日志才会输出到控制台(这是因为Log4j有一个默认的配置,它的日志级别是ERRROR,输出只有控制台),下面是我在官网Configuration找来的默认配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
现在我们按照官方配置文件的格式,创建自己的定义的日志文件,并且把日志级别改成TRACE:
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<!--控制台的配置-->
<Console name="Console" target="SYSTEM_OUT">
<!--输出日志的格式-->
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<!-- 只让这个Logger输出trace信息,其他都是error级别 -->
<Logger name="com.ray.test.Hello" level="trace" additivity="false">
<Appender-ref ref="Console"/>
</Logger>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
此时有自定义配置文件,Hello这个类调用main方法,在控制台会输出下面的结果:
所有的日志都打印出来了,大家可以对照上面的代码看一看。
复杂点的配置:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Configuration有两个属性,分别是status 和 monitorInterval
status:用于设置log4j2自身内部的信息输出
monitorInterval:自动检测修改配置文件和重新配置本身,设置间隔秒
-->
<Configuration status="WARN" monitorInterval="30">
<!-- 先定义所有的appender -->
<Appenders>
<!--控制台的配置-->
<Console name="Console" target="SYSTEM_OUT">
<!-- 控制台知输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
<!--输出日志的格式-->
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} %L %M - %msg%xEx%n"/>
</Console>
<!-- 文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用-->
<File name="log" fileName="log/test.log" append="false">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} %L %M - %msg%xEx%n"/>
</File>
<!-- 这个会打印出所有的信息,每次大小不超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下并进行压缩,作为存档-->
<RollingFile name="RollingFile" fileName="logs/app.log" filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %logger{36} %L %M -%msg%xEx%n"/>
<SizeBasedTriggeringPolicy size = "50MB"/>
<!--若不设置,默认一个文件夹最多7个文件,这里设置了20-->
<DefaultRolloverStrategy max="20"/>
</RollingFile>
</Appenders>
<Loggers>
<!-- 建立一个默认的root的logger -->
<root level="trace">
<appender-ref ref="RollingFile"/>
<appender-ref ref="Console"/>
</root>
</Loggers>
</Configuration>
- ConsoleAppender:输出结果到System.out或是System.err。
- FileAppender:输出结果到指定文件,同时可以指定输出数据的格式。append=“false”指定不追加到文件末尾
- RollingFileAppender:自动追加日志信息到文件中,直至文件达到预定的大小,然后自动重新生成另外一个文件来记录之后的日志。
Console节点中的PatternLayout定义了输出日志时的格式:
%d{HH:mm:ss.SSS} 表示输出到毫秒的时间
%t 输出当前线程名称
%-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0
%logger 输出logger名称,因为Root Logger没有名称,所以没有输出
%msg 日志文本
%n 换行
其他常用的占位符有:
%F 输出所在的类文件名,如Client.java
%L 输出行号
%M 输出所在方法名
%l 输出语句所在的行数, 包括类名、方法名、文件名、行数
输出结果:
Log4j2 HelloWorld的更多相关文章
- log4j2 使用说明
因近期需要编写J2EE程序,所以简单学习了Log4j2,这里把我学习的一些信息做记录: 1.从HelloWorld开始 参考:http://logging.apache.org/log4j/2.x/m ...
- Log4J2基本配置
[1]. Log4J2入门: <1>. 导入Jar包: log4j-api-2.0-beta9.jar log4j-core-2.0-beta9.jar <2>. 编写代码: ...
- SpringBoot系列一(入门,ORM,Transaction,log4j2等)
今天写篇springboot的博客,主要介绍一下springboot搭建以及一些整合. 首先介绍springboot搭建,我今天选择Maven,想用Gradle搭建的就自己百度一下吧,访问" ...
- Log4j2中RollingFile的文件滚动更新机制
一.什么是RollingFile RollingFileAppender是Log4j2中的一种能够实现日志文件滚动更新(rollover)的Appender. rollover的意思是当满足一定条件( ...
- Log4j 2.0 使用说明(1) 之HelloWorld
以下是Log4j2.0的类图,以便大家对2.0有一个整体的理解. 就如我们学习任何一个技术一样,这里我们首先写一个Hello World: 1,新建工程TestLog4j 2,下载Log4j 2.0有 ...
- storm(3)-本机模式-helloworld
pom.xml <dependency> <groupId>org.apache.storm</groupId> <artifactId>storm-c ...
- Ant-编译构建(2)-第3方jar包引入、log4j2
1.项目目录结构图,lib包引入了一些关于common logging+log4j2相关的jar. 2.编写相关的build.xml <?xml version="1.0" ...
- 使用webstorm+webpack构建简单入门级“HelloWorld”的应用&&引用jquery来实现alert
使用webstorm+webpack构建简单入门级"HelloWorld"的应用&&构建使用jquery来实现 1.首先你自己把webstorm安装完成. 请参考这 ...
- Idea下用SBT搭建Spark Helloworld
没用过IDEA工具,听说跟Eclipse差不多,sbt在Idea其实就等于maven在Eclipse.Spark运行在JVM中,所以要在Idea下运行spark,就先要安装JDK 1.8+ 然后加入S ...
随机推荐
- Python数据分析基础教程
Python数据分析基础教程(第2版)(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1_FsReTBCaL_PzKhM0o6l0g 提取码:nkhw 复制这段内容后 ...
- Linux shell编程语法
由于条件判断和循环跟其他语言都大同小异,学过编程的话很好理解,这里只贴出格式,不具体写用法了.(select菜单会详细讲一下) 条件判断 if条件判断 普通if条件判断: if 判断条件1; then ...
- 利用PIL和Selenium实现页面元素截图
预备 照张相片 selenium.webdriver可以实现对显示页面的截图: from selenium import webdriver dr = webdriver.Firefox() dr.g ...
- react_app 项目开发 (9)_数据可视化 ECharts
数据可视化 ECharts yarn add echarts echarts-for-react
- JS-函数声明 和 函数表达式
问题: 1, function foo() {}; 2, var foo = function () {}; 1,上面的语法是声明,可以提升,因此在函数定义的上方也可以调用 2,下面的语法是函数表达式 ...
- 安装tomcat9
要提前安装好jdk,不要是openjdk //我之前有文章写安装jdk的 [root@ycj ~]# wget http://mirrors.hust.edu.cn/apache/tomcat/tom ...
- vins-mono:雅可比矩阵的推导
imu残差公式 我们计算雅可比采用加扰动形式 以下是位置增量偏差对旋转qbk的雅可比推导 对应的雅可比矩阵的代码 jacobian_pose_i.block<, >(O_P, O_R) = ...
- JAVA RPC(二)序列化协议杂谈
序列化和反序列化作为Java里一个较为基础的知识点,大家心里也有那么几句要说的,但我相信很多小伙伴掌握的也就是那么几句而已,如果再深究问一下Java如何实现序列化和反序列化的,就可能不知所措了!遥记当 ...
- poj2362
#include<iostream> using namespace std; ]; int total; int rec; int n; ]; int flag; int flag1; ...
- IDEA导入Git项目后右键项目找不到Git选项的解决方法
进入Setting -> version Control -> 在下图的第二步中是否有灰色的Module,选中它->点击第三步的+即可 转自:https://blog.csdn.ne ...