美文网首页
Apache Log4j 2 -- 日志

Apache Log4j 2 -- 日志

作者: saoraozhe3hao | 来源:发表于2018-09-19 11:17 被阅读0次

官网:https://logging.apache.org/log4j/2.x/
历史:Ceki Gülcü 1996年创立Log4j,1999年捐献给Apache,2015年Apache宣布Log4j不在维护,开启Log4j 2
同类产品:JDK Logger、Apache Commons Logging

日记级别
fatal > error > warn > info > debug > trace

Log4j应用组成

1、配置maven依赖

<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-core</artifactId>
  <version>2.11.1</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.11.1</version>
</dependency>

整合SpringBoot

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion>
            <!-- 使用Log4j,排除掉springboot 自带的logging -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

2、log4j配置
在resource目录下,新建 log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">   <!-- log4j自身日志的级别,输出到console -->
    <Appenders>   <!-- 输出目标配置-->
        <Console name="Console" target="SYSTEM_OUT"> <!-- 控制台 -->
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> <!-- 输出格式 -->
        </Console>
        <File name="LogFile" fileName="D:/logs/tim.log"> <!-- 日志文件 -->
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </File>
        <!-- 滚动文件 -->
        <RollingRandomAccessFile name="RollingFile" fileName="D:/log4j2.log" 
                filePattern="D:/$${date:yyyy-MM}/log4j2-%d{yyyy-MM-dd HH-mm}-%i.log">  <!-- 文件名格式 -->
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" />  <!-- 每天生成一个文件 -->
                <SizeBasedTriggeringPolicy size="1024 MB" />  <!-- 每1024MB成一个文件 -->
            </Policies>
            <DefaultRolloverStrategy max="20" />  <!-- 最多保留20个文件 -->
        </RollingRandomAccessFile>
    </Appenders>
    <Loggers>  <!-- 输出来源配置 -->
        <Root level="error">  <!-- 所有来源 -->
            <AppenderRef ref="Console" />  <!-- 输出来源绑定输出目标 -->
        </Root>
        <!-- 指定来源,additivity为false表示Root中扣除此来源 -->
        <Logger level="trace" name="com.hogen.controller.MyController" additivity="false">
            <AppenderRef ref="LogFile" />
        </Logger>
        <Logger level="trace" name="com.hogen.service.MyService" additivity="false">
            <AppenderRef ref="RollingFile" />
        </Logger>
    </Loggers>
</Configuration>

3、使用

private static Logger logger = LogManager.getLogger(MyController.class.getName()); // 入参即日志的前缀

logger.error("error级别");
logger.info("info级别"); 
logger.debug("debug级别");
logger.warn("warn级别");
logger.fatal("fatal级别");
logger.log(Level.TRACE, "trace级别");   // 等同于logger.trace("trace级别")

按日志级别输出文件

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <properties>
        <property name="LOG_HOME">${sys:user.home}/logs</property>  <!-- 自定义量,可以引用系统变量 -->
        <property name="FILE_NAME">log4j</property>
    </properties>
    <Appenders>
        <RollingRandomAccessFile name="InfoFile"  fileName="${LOG_HOME}/info.log"
                                 filePattern="${LOG_HOME}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd HH-mm}-%i.log">
            <Filters>
                <!-- 级别在warn以上的,排除掉;级别在warn以下的,进入下一个filter -->
                <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
                <!-- 级别在info以上的,输出;级别在info以下的,排除掉;最终只得到info级别 -->
                <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <PatternLayout>同上</PatternLayout>
            <Policies>同上<Policies>
            <DefaultRolloverStrategy>同上<DefaultRolloverStrategy/>
        </RollingRandomAccessFile>

        <RollingRandomAccessFile name="ErrorFile"  fileName="${LOG_HOME}/error.log"
                                 filePattern="${LOG_HOME}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd HH-mm}-%i.log">
            <Filters>
                <ThresholdFilter level="fatal" onMatch="DENY" onMismatch="NEUTRAL" />
                <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" />
            </Filters>k
            <PatternLayout>同上</PatternLayout>
            <Policies>同上<Policies>
            <DefaultRolloverStrategy>同上<DefaultRolloverStrategy/>
        </RollingRandomAccessFile>

        <RollingRandomAccessFile name="FatalFile" fileName="${LOG_HOME}/fatal.log"
                                 filePattern="${LOG_HOME}/$${date:yyyy-MM}/fatal-%d{yyyy-MM-dd HH-mm}-%i.log">
            <Filters>
                <ThresholdFilter level="fatal" onMatch="ACCEPT" onMismatch="DENY" />
            </Filters>
            <PatternLayout>同上</PatternLayout>
            <Policies>同上<Policies>
            <DefaultRolloverStrategy>同上<DefaultRolloverStrategy/>
        </RollingRandomAccessFile>

    </Appenders>
    <Loggers>
        <Root level="trace">
            <AppenderRef ref="Console" />
            <AppenderRef ref="InfoFile" />
            <AppenderRef ref="ErrorFile" />
            <AppenderRef ref="FatalFile" />
        </Root>
    </Loggers>
</Configuration>

相关文章

  • Log4j2基本使用入门

    1.Log4j2简介 Apache Log4j 2是日志框架Log4j的升级,它比其前身Log4j 1.x提供了重...

  • 2019-09-02 log4j日志级别

    log4j提供了4种日志级别和2个日志开关。官方网址: http://logging.apache.org/log...

  • 快速修复 Log4j “核弹级” 漏洞

    Log4j漏洞 Apache Log4j2是一个基于Java的日志记录工具。由于Apache Log4j2存在递归...

  • Log4j2 又爆出重大bug,log4j-2.17.0-rc1

    一、框架简介 Apache Log4j 2是一款优秀的Java日志框架。该工具重写了Log4j框架,并且引入了大量...

  • Mybatis日志级别

    1.1 log4j简介 log4j是Apache提供的一款记录日志的工具 log4j既可以将日志信息打印在控制台,...

  • 了解java日志体系

    log4j, log4j2, slf4j, logback关系 log4j是由Apache开发的一套元老级日志框架...

  • log4j详细介绍

    log4j是什么 *Apache的开源项目log4j是一个功能强大的日志组件(框架),提供方便的日志记录。 日志的...

  • Log4j

    Log4j用于日志记录,有两个版本,一个是老版本Log4j 1.x,这里写的是新版本Apache Log4j 2的...

  • log4j2+Slf4j日志配置文件

    log4j简介 log4j是java常见的日志输出框架, 2015年5月,Apache宣布Log4J 1.x 停止...

  • 初探log4j

    log4j 1.x log4j是目前较为常用的日志框架,该项目由apache进行维护。(其他常见的日志框架还有ja...

网友评论

      本文标题:Apache Log4j 2 -- 日志

      本文链接:https://www.haomeiwen.com/subject/pqabnftx.html