我是靠谱客的博主 勤劳小蝴蝶,最近开发中收集的这篇文章主要介绍springboot整合日志(二)----------logback( log4j2调整为logback ),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

springboot的日志框架别的博客上说的也比较多,很多都可用。但是我这里是有一些特殊的项目经历,值得一说。
原本项目中使用的log4j2,也就是上一篇 springboot整合日志(一)----------log4j2 中讲的。结果由于要部署到京东云上,他们的日志收集系统要求用logback的控制台输出日志。通过控制台就能收集到日志,并声称日志文件。所以我们的项目就要改造成logback的日志系统。
然后发现稍微调整log4j2的日志配置就能实现logback控制台输出。调整如下:
1.pom.xml中的日志依赖改为logback。
在这里插入图片描述
2. 删除掉resource文件下的log4j2的日志配置。
在这里插入图片描述
3.在yml文件中删除掉对应日志文件的引入即可。即下面这行去掉

logging:
  config: classpath:log4j2.xml

4.在类上加上lomback的注解不变。即可在方法上引入日志。
在这里插入图片描述
在这里插入图片描述
5.启动项目,即可发现日志已经生效。打印出彩色日志在控制台。满足了要求。
但是,等部署到测试环境,要去看日志文件时,发现,这个日志配置虽然满足了生产环境的要求,却不满足测试环境输出日志文件的需求。还是要加上配置文件,给出控制台打印或者日志打印的日志输出模式。实际经过上面的修改后。logback的日志框架引入什么都没有了只剩下一个@Slf4j这样一个类上面的注解。只要注解在,加上log.info语句,就能打印出日志。我们需要引入logback的日志配置。来实现可控制台,可日志文件的形式。所以完整的配置还要有下面两步:

a. logback引入配置文件:logback-spring到resource目录。日志文件分为error和info两个目录。分别存储错误日志和正常打印日志

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<configuration  scan="true" scanPeriod="60 seconds" debug="false">

    <contextName>LOGBACK</contextName>
    <property name="LOG.INFO.PATH" value="/info/logs"/>
    <property name="LOG.ERROR.PATH" value="/error/logs"/>
    <Property name="PROJECT_NAME" value="user-center"/>
    <property name="PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger - %msg%n"></property>
    <property name="MAX_HISTORY" value="15"></property>
    <property name="MAX_FILE_SIZE" value="150MB"/>
    <property name="TOTAL_SIZE_CAP" value="10GB"></property>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>debug</level>
        </filter>
        <encoder>
            <pattern>${PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="INFO-APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG.INFO.PATH}/${PROJECT_NAME}/${PROJECT_NAME}.info.log</file>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG.INFO.PATH}/${PROJECT_NAME}/${PROJECT_NAME}.info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>${MAX_HISTORY}</maxHistory>
            <totalSizeCap>${TOTAL_SIZE_CAP}</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="ERROR-APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG.ERROR.PATH}/${PROJECT_NAME}/${PROJECT_NAME}.error.log</file>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG.ERROR.PATH}/${PROJECT_NAME}/${PROJECT_NAME}.error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>${MAX_HISTORY}</maxHistory>
            <totalSizeCap>${TOTAL_SIZE_CAP}</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
	
	<!--指定特定路径下的日志输出为debug模式。这里是指定持久层操作打印出sql-->
    <logger name="com.zhanglf.catalog.dao" level="debug"></logger>
	
	<!--指定不同环境dev、test、prod下的日志输出方式-->
    <springProfile name="dev">
        <root level="info">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="INFO-APPENDER"/>
            <appender-ref ref="ERROR-APPENDER"/>
        </root>
    </springProfile>

    <springProfile name="test">
        <root level="info">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="INFO-APPENDER"/>
            <appender-ref ref="ERROR-APPENDER"/>
        </root>
    </springProfile>
	<!--指定prod下的日志输出方式为控制台输出-->
    <springProfile name="prod">
        <root level="info">
            <appender-ref ref="CONSOLE"/>
        </root>
    </springProfile>

</configuration>

b.在yml文件中引入日志配置

logging:
  config: classpath:logback-spring.xml

最后

以上就是勤劳小蝴蝶为你收集整理的springboot整合日志(二)----------logback( log4j2调整为logback )的全部内容,希望文章能够帮你解决springboot整合日志(二)----------logback( log4j2调整为logback )所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(76)

评论列表共有 0 条评论

立即
投稿
返回
顶部