SpringBoot中使用Log4j2

一、简介

  1. slf4j是日志接口,logbacklog4j2是其实现。
  2. log4j2的并发效率优于logback

二、SpringBoot中使用log4j2

  1. 由于SpringBoot中默认使用logback作为其日志框架,因此如果需要替换为log4j2,需要先将logback的依赖排除。
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
    <!-- 排除logback的依赖 --> 
    <exclusions> 
        <exclusion> 
            <groupId>org.springframework.boot</groupId> 
            <artifactId>spring-boot-starter-logging</artifactId> 
        </exclusion> 
    </exclusions> 
</dependency> 
<!-- log4j2 --> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-log4j2</artifactId> 
</dependency>
  1. classpath下新建log4j2的配置文件,命名为log4j2-spring.xml,如需重命名,如log4j2.xml,需要在application.properties中指定配置文件的位置
logging.config=classpath:log4j2.xml
  1. 配置文件如下
<?xml version="1.0" encoding="UTF-8"?>
<!--
 status:指定log4j2框架本身打印日志的级别
 monitorInterval:每隔多少秒重新读取配置文件,可以不重启应用的情况下修改配置
 -->
<Configuration status="INFO" monitorInterval="30">
    <Properties>
        <!-- 配置日志文件输出目录 -->
        <Property name="APP_NAME">spring-log4j2</Property>
        <Property name="LOG_HOME">/var/log</Property>
        <!--
         %date 或 %d{yyyy-MM-dd HH:mm:ss.SSS}:表示输出到毫秒的时间
         %t 或 %thread:输出当前线程的名称
         %X:按MDC输出日志,使用示例:在日志打印前执行MDC.put("httpRequestId", requestId),打印之后执行MDC.remove("httpRequestId")
         %-5level:输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补空格
         %logger{80}:输出logger名称
         %msg:输出日志内容
         %n:换行
         -->
        <Property name="printPattern">%date [%thread] [%X{httpRequestId}] %-5level %logger{50} - %msg%n</Property>
        <Property name="outputPattern">%date [%thread] [%X{httpRequestId}] %-5level %logger{80} - %msg%n</Property>
    </Properties>

    <Appenders>
        <Console name="console" target="SYSTEM_OUT">
            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
            <ThresholdFilter level="ALL" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <pattern>${printPattern}</pattern>
                <charset>UTF-8</charset>
            </PatternLayout>
        </Console>

        <RollingFile name="infoLog" fileName="${LOG_HOME}/${APP_NAME}-info.log" filePattern="${LOG_HOME}/$${date:yyyy-MM-dd}/${APP_NAME}-info.%d{yyyy-MM-dd}.%i.log.zip" immediateFlush="true">
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <pattern>${outputPattern}</pattern>
                <charset>UTF-8</charset>
            </PatternLayout>
            <Policies>
                <!--
                interval:根据日期格式中最具体的时间单位来决定应该多久发生一次rollover,默认是1小时,此处表示1天生成一个文件
                modulate:表示是否调整时间间隔以使在时间间隔边界发生下一个rollover。
                例如:假设小时为具体的时间单元,当前时间为上午3点,时间间隔为4,第一次发送rollover是在上午4点,接下来是上午8点,接着是中午,接着是下午4点等发生。
                -->
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
                <!-- 一个日志文件的最大大小,当超过此大小时将发生rollover -->
                <SizeBasedTriggeringPolicy size="100MB"/>
            </Policies>
            <!--文件夹下最多的文件个数,如果不设置默认为7 -->
            <DefaultRolloverStrategy max="30" />
        </RollingFile>

        <RollingFile name="errorLog" fileName="${LOG_HOME}/${APP_NAME}-error.log" filePattern="${LOG_HOME}/${APP_NAME}-error.%d{yyyy-MM-dd}.%i.log.zip" immediateFlush="true">
            <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <pattern>${outputPattern}</pattern>
                <charset>UTF-8</charset>
            </PatternLayout>
            <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
                <SizeBasedTriggeringPolicy size="100MB"/>
                <DefaultRolloverStrategy max="30" />
            </Policies>
        </RollingFile>

    </Appenders>
    <Loggers>
        <Root level="INFO" >
            <appender-ref ref="console"/>
            <appender-ref ref="infoLog"/>
            <appender-ref ref="errorLog"/>
        </Root>
    </Loggers>
</Configuration>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: sogouq.reduced weblog是搜狗搜索在2016年推出的一款基于用户搜索行为数据的网站分析工具。该工具可以对网站流量、用户行为、竞争分析等方面进行深入分析,帮助网站管理者进行数据驱动的决策,提高网站的用户体验和营销效益。 该工具提供了多个维度的数据分析功能,包括来源渠道、访问路径、访问时长、热门页面、搜索关键词等。用户只需在工具输入要分析的网站地址,即可获得详尽的数据分析报告,比如该网站的月度流量变化、访问页面的热度排行、用户的地域分布和兴趣偏好等等。 在竞争分析方面,该工具可以帮用户挖掘竞争对手的流量来源、优势关键词、用户行为等信息,帮助用户针对性地优化网站的内容和推广策略。 总的来说,sogouq.reduced weblog是一款十分实用的网站分析工具,可以帮助企业和个人了解自己网站的情况,及时发现问题和优化方向,提升网站的竞争力和用户体验,同时也对互联网营销和数据分析领域的发展起到了重要的推动作用。 ### 回答2: Sogouq.reduced Weblog是一种网络日志,是搜狗公司推出的一项服务。该服务可以帮助用户创建和管理自己的博客,同时还能提供一些额外的功能,如编辑器、主题库、插件等。 通过Sogouq.reduced Weblog,用户可以分享自己的思想、心情、经验或任何其他内容。可以随时随地更新和发布文章,让更多的人关注自己的想法。同时,也可以与其他博客主交互,分享经验,互相学习进步。 Sogouq.reduced Weblog提供了许多现代化的功能,使得博客的操作变得更加简单和便捷。例如,可以定制自己的主题,从而让自己的博客变得更加个性化;还可以添加各种插件,从而扩展博客的功能性。这一切都让用户能够更加专注于创作内容,而不是困在技术细节的泥潭。 总的来说,Sogouq.reduced Weblog是一个非常实用的网络服务,它可以帮助用户实现自己的博客梦想,同时还能提供各种便捷的功能,让用户可以专注于内容创作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值