Spring Boot使用Log4j2的实例代码

前言

Spring Boot 默认使用Logback,来打印日志,这里还想说的SLFJ(Simple Logging Facade for Java),它们之间的关系,一张图,说明一切:

maven 配置

<!--use log4j2 property-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <exclusions>
        <exclusion>
          <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>

    <!--flume log4j appender-->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-flume-ng</artifactId>
      <version>2.6</version>
    </dependency>

log4j2.xml 配置

Log4j2 提供非常丰富的Appender,比如CassandraAppender,AsyncAppender,我们这里配置了简单的Flume Appnder,Failover Appender.

<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="60">
  <Properties>
    <Property name="source">api-web</Property>
    <Property name="log-pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{userId}] [%t] [%-5level] %c{1.}@%M%L - %m%n</Property>
    <!--get product dynamic property-->
  </Properties>
  <Appenders>

    <RollingFile name="RollingFile" fileName="logs/app.log"
           filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
      <PatternLayout>
        <Pattern>${log-pattern}</Pattern>
      </PatternLayout>
      <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="250 MB"/>
      </Policies>
    </RollingFile>

    <Flume name="eventLogger" compress="false" type="avro" ignoreExceptions="false">
      <Agent host="192.168.31.115" port="4444"/>
      <Agent host="127.0.0.1" port="4444"/>
      <PatternLayout>
        <pattern>
          <pattern>${log-pattern}</pattern>
        </pattern>
      </PatternLayout>
    </Flume>

    <Console name="Console-Appender" target="SYSTEM_OUT" ignoreExceptions="false">
      <PatternLayout>
        <pattern>${log-pattern}</pattern>
      </PatternLayout>
    </Console>

    <!-- 主要Apeender失败的时候使用备用Appender-->
    <Failover name="Failover" primary="eventLogger">
      <Failovers>
        <AppenderRef ref="RollingFile"/>
      </Failovers>
    </Failover>
  </Appenders>
  <Loggers>
    <!--在需要同时打印文件和发送至flume的时候使用-->
    <!--<Logger name="" level="info" additivity="false">-->
      <!--<AppenderRef ref="RollingFile"/>-->
    <!--</Logger>-->
    <Root level="info">
      <AppenderRef ref="Console-Appender"/>
      <AppenderRef ref="Failover"/>
    </Root>
  </Loggers>
</Configuration>

总结

如果遇到识别不了log4j2.properties/xml,可以在application.properties,中指定 logging.config=classpath:log4j2.properties/xml

参考

https://springframework.guru/introducing-log4j-enterprise-class-logging/

http://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们

(0)

相关推荐

  • Spring Boot Log4j2的配置使用详解

    后台程序开发及上线时,一般都会用到Log信息打印及Log日志记录,开发时通过Log信息打印可以快速的定位问题所在,帮助我们快捷开发.程序上线后如遇到Bug或错误,此时则需要日志记录来查找发现问题所在. Spring Boot 可以集成很多不同的日志系统,其中最常用的Apache Log4j,而Log4j 2是Log4j的升级版本,Log4j 2相对于Log4j 1.x 有了很多显著的改善.所以这篇博客就直接来说说Spring Boot如何集成并配置使用Log4j2. 1. 导入Log4j2的包

  • Spring Boot使用Log4j2的实例代码

    前言 Spring Boot 默认使用Logback,来打印日志,这里还想说的SLFJ(Simple Logging Facade for Java),它们之间的关系,一张图,说明一切: maven 配置 <!--use log4j2 property--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</ar

  • spring boot application properties配置实例代码详解

    废话不多说了,直接给大家贴代码了,具体代码如下所示: # =================================================================== # COMMON SPRING BOOT PROPERTIES # # This sample file is provided as a guideline. Do NOT copy it in its # entirety to your own application. ^^^ # ========

  • Spring Boot定时任务的使用实例代码

    Spring Boot中配置定时任务极其简单......下面看下实例代码: import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import java.text.SimpleD

  • Angular+Bootstrap+Spring Boot实现分页功能实例代码

    需要用到的js angular.js(用angular.min.js会导致分页控件不显示) ui-bootstrap-tpls.min.js angular-animate.js 需要用到的css bootstrap.min.css 由于本项目使用了路由,所以讲js以及css文件的应用都放在一个主html,请同学们在html页面中添加以上文件 在开始之前,我先简单介绍下分页的原理. 分页的实质其实就是一条sql语句, 比如查找第二页,即第16到第30条数据 在MySQL中是select * fr

  • Spring Boot整合mybatis(一)实例代码

    sprig-boot是一个微服务架构,加快了spring工程快速开发,以及简便了配置.接下来开始spring-boot与mybatis的整合. 1.创建一个maven工程命名为spring-boot-entity,pom.xml文件配置如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s

  • Spring Boot集成Mybatis的实例代码(简洁版)

    概述 现在互联网应用中,大部分还是使用Mybatis来操作数据库的,本文介绍一下Spring Boot中如何集成Mybatis. 上篇介绍了Spring Boot 直接用jar运行项目的方法,需要的朋友点击查看. 创建Spring Boot工程 在 Spring Boot 开篇-创建和运行 一文中有一个小节介绍了如何使用Spring Boot的组件来创建工程.如果要集成Mybatis,只需要把Mysql和Mybatis这两个组件勾选一下即可. 当然也可以不通过这种方式,直接在POM.xml文件中

  • spring boot自定义log4j2日志文件的实例讲解

    背景:因为从 spring boot 1.4开始的版本就要用log4j2 了,支持的格式有json和xml两种格式,此次实践主要使用的是xml的格式定义日志说明. spring boot 1.5.8.RELEASE 引入log4j2的开发步骤如下: 1.首先把spring-boot-starter-web以及spring-boot-starter包下面的spring-boot-starter-logging排除,然后引入spring-boot-starter-log4j2包. <dependen

  • spring boot多数据源动态切换代码实例

    这篇文章主要介绍了spring boot多数据源动态切换代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 当项目中存在多数据源时,就涉及到数据源的动态切换,通过研究,特此记录一下. 1.maven依赖 <!--数据库连接--> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> &

  • spring boot整合log4j2及MQ消费处理系统日志示例

    目录 前言 1.添加相关jar依赖 2.系统log4j2.xml配置 3.添加处理日志的消息监听 前言 当系统的并发比较高的时候,日志的处理输出也是一种性能的开销负担,所以,选择一个中间件来处理消费日志必不可少! 下面是spring boot整合log4j2结合spring amqp来消费处理系统日志的实例,只需要简单的三步 1.添加相关jar依赖 <dependency> <groupId>org.springframework.boot</groupId> <

  • spring boot + jpa + kotlin入门实例详解

    spring boot +jpa的文章网络上已经有不少,这里主要补充一下用kotlin来做. kotlin里面的data class来创建entity可以帮助我们减少不少的代码,比如现在这个User的Entity,这是Java版本的: @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; private String firstName; private S

随机推荐