• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
山高我为峰
博客园    首页    新随笔    联系   管理    订阅  订阅
spring boot 中logback多环境配置

spring boot 配置logback

spring boot自带了log打印功能,使用的是Commons logging 具体可以参考spring boot log 
因此,我们只需要在resources中添加一个logback-spring.xml的logback的配置文件就可以实现正常的日志打印了。然而我们的目标是要实现多环境log配置,即本地输出到控制台,生产,测试输出到文件。 
logback-spring.xml

?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <logger name="org.springframework.web" level="INFO" />

    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <springProfile name="prod">
        <!-- 注意这里一定要放到springProfile里, 否则在你本机执行的时候还是会去找相应的文件 -->
        <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!--日志文件输出的文件名-->
                <FileNamePattern>/services/logs/spring-boot-example.%d{yyyy-MM-dd}.log</FileNamePattern>
                <!--日志文件保留天数-->
                <maxHistory>15</maxHistory>
                <totalSizeCap>30GB</totalSizeCap>
            </rollingPolicy>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            </encoder>
            <!--日志文件最大的大小-->
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <MaxFileSize>10MB</MaxFileSize>
            </triggeringPolicy>
        </appender>

        <appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
            <discardingThreshold>0</discardingThreshold>
            <queueSize>500</queueSize>
            <appender-ref ref="FILE" />
        </appender>
    </springProfile>

    <springProfile name="dev">
        <root level="INFO">
            <appender-ref ref="consoleAppender" />
        </root>
    </springProfile>

    <springProfile name="junit">
        <root level="INFO">
            <appender-ref ref="consoleAppender" />
            <appender-ref ref="asyncFileAppender" />
        </root>
    </springProfile>
    <springProfile name="test">
        <root level="INFO">
            <appender-ref ref="asyncFileAppender" />
        </root>
    </springProfile>
    <springProfile name="pro">
        <root level="INFO">
            <appender-ref ref="asyncFileAppender" />
        </root>
    </springProfile>

</configuration>

application.yaml

spring:
  profiles:
    active: dev
---
server:
  port: 8001
spring:
  profiles: dev
  output:
    ansi:
      enabled: detect #配置输出console的ide中的配色,并没有什么用
---
server:
  port: 8009
spring:
  profiles: test
---
server:
  port: 8008
spring:
  profiles: prod

注意在logback-spring.xml的配置中,如果不把<appender name="FILE></append>放到<springPofile></springPofile>中,就算你只是输出到console, 还是会去创建FILE中设置的log文件。

当然日志还是在控制台输出,并不会写到log文件中。这个问题并不仅仅出现在spring boot 中,是logback本身的问题,就算不用spring也会出现这种问题

转载:http://blog.csdn.net/m0_37895333/article/details/72457007

posted on 2017-11-17 16:48  山高我为峰  阅读(9660)  评论(3)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3