1. 在项目的开发过程,我们需要使用日志输出一些与编程相关的信息以及对系统的操作记录在日志文件中,以达成下面的用途:
*1) 问题追踪:*通过日志不仅仅包括我们程序的一些bug,也可以在安装配置时,通过日志可以发现问题。
*2) 状态监控:*通过实时分析日志,可以监控系统的运行状态,做到早发现问题、早处理问题。
*3) 安全审计:*审计主要体现在安全上,通过对日志进行分析,可以发现是否存在非授权的操作
2.在log4j2中, 共有8个级别,按照从低到高为:
ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF。
All:最低等级的,用于打开所有日志记录.
Trace:是追踪,就是程序推进一下.
Debug:指出细粒度信息事件对调试应用程序是非常有帮助的.
Info:消息在粗粒度级别上突出强调应用程序的运行过程.
Warn:输出警告及warn以下级别的日志.
Error:输出错误信息日志.
Fatal:输出每个严重的错误事件将会导致应用程序的退出的日志.
OFF:最高等级的,用于关闭所有日志记录.
3.log4j2.xml简单的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<Configuration status="error">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<File name="MyFile" fileName="e:/logs/mylog.log">
<PatternLayout>
<pattern>%d %p %C{1.} [%t] %m%n</pattern>
</PatternLayout>
</File>
</Appenders>
<Loggers>
<!-- 日志级别 -->
<Root level="info">
<!-- 控制台 -->
<AppenderRef ref="Console"/>
<!-- 磁盘保存 -->
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>
4. 去官方下载log4j 2,导入jar包
官网下载路径:https://logging.apache.org/log4j/2.x/download.html
需要导入三个包
第一个:log4j-api-2.11.1.jar
第二个:log4j-core-2.11.1.jar
第三个:log4j-web-2.11.1.jar
5. 一个简单的测试案例
建一个servlet,只需要编写两行代码,就可以测试
private Logger logger= (Logger) LogManager.getRootLogger();
logger.info(“你好,帅哥”);
package com.iflytek.app;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@WebServlet("/Log4j2Servlet")
public class Log4j2Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
//日志记录器
private Logger logger= (Logger) LogManager.getRootLogger();
public Log4j2Servlet() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("你好,帅哥");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
调试结果
1.控制台
12:26:41.247 [http-bio-8080-exec-3] INFO - 你好,帅哥
2.磁盘文件
2018-11-17 12:26:41,247 INFO c.i.a.Log4j2Servlet [http-bio-8080-exec-3] 你好,帅哥
6. 在项目中的简单应用
应用于记录用户登录时间,名称,及一些功能操作。
我们在导入包和配置好log4j2.xml文件后, 只需要创建
private Logger logger= (Logger) LogManager.getRootLogger();
然后在调用 **logger.日志级别(“日志里所要记录的信息”);**特别强调日志 的级别要与xml配置的日志级别一致。例如info:
logger.info("你好,帅哥");
logger.info(loginName+"登陆成功");
要想了解更多日志知识,请查看log4j 2官网https://logging.apache.org/log4j/2.x/