码迷,mamicode.com
首页 > 其他好文 > 详细

log4j2-2.13.0版本安装

时间:2020-07-10 15:40:00      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:size   http   time   间隔   消息   更改   his   运行程序   记录   

一、log4j2介绍

  • 暂略

二、log4j2安装

  • 测试工程结构

技术图片

pom.xml 添加log4j2所需jar包依赖

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

log4j2.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<!--
    status属性:查看log4j的装配过程,值为OFF表示关闭,值为debug等日志级别为查看日志创建过程(正常情况下只有debug和trace级别日志显示)
    monitorInterval : 配置文件更改后重新加载,不用重启应用,单位秒
-->
<configuration status="error">
    <!--全局属性声明,方便后面使用${属性名称} 进行引用-->
    <properties>
        <!-- /代表的是盘符根目录, 还有诸如 .代表当前当前项目路径 ,我们也可以使用@ 名称@从pom.xml中动态获取这些值 -->
        <property name="LOG_HOME">logs</property>
        <property name="DEBUG_FILE_NAME">debug</property>
        <property name="ERROR_FILE_NAME">error</property>
    </properties>

    <!--先定义所有的appender -->
    <appenders>
        <!--这个输出控制台的配置 -->
        <Console name="Console" target="SYSTEM_OUT">
            <!--
            控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)
            ThresholdFilter:指定追加器过滤日志的级别
            level:设定级别
            onmatch:匹配符合条件的日志输出
            onMismatch:拒绝不符合条件
        -->

            <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
            <!--    输出日志的格式 -->
            <PatternLayout pattern="[name] %d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>

        </Console>

        <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,false适合临时测试用
        append为TRUE表示消息增加到指定文件中,false表示消息覆盖指定的文件内容,默认值是true -->
        <File name="log" fileName="${LOG_HOME}/log4j2.log" append="false">
            <PatternLayout pattern="[name] %d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <!--<PatternLayout pattern="[log4j2_test]  %-d{yyyy-MM-dd HH-mm-ss.SSS} [%-5p] %C:%L  %m%n"/>-->

        </File>

        <!--添加过滤器ThresholdFilter,可以有选择的输出某个级别以上的类别  onMatch="ACCEPT" onMismatch="DENY"意思是匹配就接受,否则直接拒绝  -->
        <File name="ERROR" fileName="${LOG_HOME}/error.log">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="[name] %d{yyyy.MM.dd ‘at‘ HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>

        <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
        <RollingFile name="RollingFile" fileName="${LOG_HOME}/web.log"
                     filePattern="logs/$${date:yyyy-MM}/web-%d{MM-dd-yyyy}-%i.log.gz">
            <!--
            间隔时间备份策略
            modulate为true表示以0点为边界进行时间偏移计算,
            例:每隔4个小时进行日志封存,当前时间为3点,那么1个小时后进行一次日志封存(将之前的日志放置到filePattern指定的封存位置)
            interval:间隔时间(其单位有filePattern中-dd HH%d{yyyy-MM}的最小单位来决定,)
            -->
            <TimeBasedTriggeringPolicy modulate="true" interval="12"/>
            <PatternLayout pattern="[name] %d{yyyy-MM-dd ‘at‘ HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <SizeBasedTriggeringPolicy size="5MB"/>
        </RollingFile>
        <!--&lt;!&ndash;-->
        <!--以大小为策略进行日志封存,%i用于记录封存文件的生成先后顺序(),.zip/.gz等指定压缩格式-->
        <!--immediateFlush:log4j2接收到日志事件时,是否立即将日志刷到磁盘。默认为true。-->
        <!--&ndash;&gt;-->
        <!--<RollingFile name="sizedRollFile" fileName="${LOG_HOME}/sizerollfile.log" immediateFlush="true"-->
        <!--filePattern="${LOG_HOME}/$${date:yyyy-MM-dd}/sizerollfile-%d{yyyy-MM-dd HH}-%i.log.zip">-->
        <!--<PatternLayout pattern="[log4j2-demo] %-d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] %c:%L %m%n"/>-->
        <!--&lt;!&ndash; 当有多个策略时,使用Policies 标签&ndash;&gt;-->
        <!--<Policies>-->
        <!--<TimeBasedTriggeringPolicy />-->
        <!--&lt;!&ndash;基于大小的触发策略,size指定大小&ndash;&gt;-->
        <!--<SizeBasedTriggeringPolicy size="10 kB"/>-->
        <!--</Policies>-->
        <!--<Filters>-->
        <!--<thresholdFilter level="debug" onmatch="ACCEPT" onMismatch="DENY"/>-->
        <!--</Filters>-->
        <!--&lt;!&ndash;-->
        <!--控制生成的封存文件数量的一种策略,max控制filePattern 中的%i ,不指定默认为7,-->
        <!--(就是你只能看见7个封存的文件,多余的你可以理解为覆盖掉了)-->
        <!--这虽然也是一种策略,但是放置在策略标签之外-->
        <!--&ndash;&gt;-->
        <!--<DefaultRolloverStrategy max="20" />-->
        <!--</RollingFile>-->

    </appenders>
    <!--定义logger,只有定义了logger并引入的appender,appender才会生效 -->
    <loggers>
        <root level="trace">
            <appender-ref ref="RollingFile"/>
            <appender-ref ref="Console"/>
            <appender-ref ref="ERROR"/>
            <appender-ref ref="log"/>
        </root>
    </loggers>
</configuration>

log4j2测试类


import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class log4j2Test {

    private static final Logger logger= LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);

    public static void main(String[] args) {
        for(int i=0;i<3;i++){
            // 记录trace级别的信息
            logger.trace("log4j2 trace日志输出:This is trace message.");
            // 记录debug级别的信息
            logger.debug("log4j2 debug日志输出:This is debug message.");
            // 记录info级别的信息
            logger.info("log4j2 info日志输出:This is info message.");
            // 记录warn级别的信息
            logger.warn("log4j2 warn日志输出:This is warn message.");
            // 记录error级别的信息
            logger.error("log4j2 error日志输出:This is error message.");
            // 记录fatal级别的信息
            logger.fatal("log4j2 fatal日志输出:This is fatal message.");
        }
    }
}
  • 测试类结果

技术图片

log4j2-2.13.0版本安装

标签:size   http   time   间隔   消息   更改   his   运行程序   记录   

原文地址:https://www.cnblogs.com/shook/p/13278915.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!