Log4j2的简单配置使用

    1.Log4j和Log4j2

     Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。Log4j2也是是Apache的一个开源项目,它改进了Log4j的一些不足。

     区别:

       (1)配置文件类型的区别

          log4j是通过一个.properties的文件作为主配置文件的,而现在的log4j 2则已经弃用了这种方式,采用的是.xml,.json或者.jsn这种方式来做。

       (2)导入的jar包不一样

          log4j需要导入一个,如:log4j-1.2.17.jar

          而log4j需要导入两个核心包,如:log4j-core-2.11.1.jar,log4j-api-2.11.1.jar

       (3)Log调用的方式不一样

         log4j的调用方式,,如:

               import org.apache.log4j.Logger;

               private static Logger logger = Logger.getLogger(LogUtil.class.getName());

        log4j2的调用方式,如:

              import org.apache.logging.log4j.Level;
              import org.apache.logging.log4j.LogManager;
              import org.apache.logging.log4j.Logger;
             private static Logger logger = LogManager.getLogger(LogUtil.class.getName());

       还有其他的区别,如配置文件方式的区别,文件渲染的区别。

2.Log4j2的配置使用

      (1)导入两个相关核心jar包

      

        (2)配置log4j2的配置文件

         如:

         

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace">
  <!-- 配置日志信息输出目的地 -->
  <Appenders>
    <!-- 输出到控制台 -->
    <Console name="Console" target="SYSTEM_OUT">
      <!--配置日志信息的格式 -->
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
    <!-- 输出到文件,其中有一个append属性,默认为true,即不清空该文件原来的信息,采用添加的方式,若设为false,则会先清空原来的信息,再添加 -->
    <File name="MyFile" fileName="D:/Log4j2.log" append="false">
      <PatternLayout>
        <!--配置日志信息的格式 -->
        <pattern>%d %p %C{1.} [%t] %m%n</pattern>
      </PatternLayout>
    </File>
  </Appenders>
  <!-- 定义logger,只有定义了logger并引入了appender,appender才会有效 -->
  <Loggers>
    <Root level="info">
      <AppenderRef ref="Console"/>
      <AppenderRef ref="MyFile"/>
    </Root>
  </Loggers>
</Configuration>

       (3)使用示例

             LogUtil类,生成Logger

            

package com.log4j2study.util;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class LogUtil {
  private static Logger logger;
  private static LogUtil util;
  
  static {
	  logger =  LogManager.getLogger(LogUtil.class.getName());
  }
  
  public Logger getLogger() {
	  return  logger;
  }
  
  public static LogUtil getInstance() {
	  if(util==null) {
		  util = new LogUtil();
	  }
	  return util;
  }
  
}

      JSP页面中进行测试

    

<body>
<%
LogUtil.getInstance().getLogger().info("这是info信息");
LogUtil.getInstance().getLogger().warn("这是warn信息");
LogUtil.getInstance().getLogger().error("这是error信息");
%>

</body>

结果:

输出到控制台的内容:

输出到文件中的内容:

猜你喜欢

转载自blog.csdn.net/qq_40348465/article/details/84308836