spring boot配置logback

原创
2017/11/05 12:17
阅读数 1.3K

logback 简单说明

1.主要对象

  • Logger作为日志的记录器,把它关联到应用的对应的context上后,主要用于存放日志对象,也可以定义日志类型、级别。
  • Appender主要用于指定日志输出的目的地,目的地可以是控制台、文件、远程套接字服务器、 MySQL、 PostreSQL、 Oracle和其他数据库、 JMS和远程UNIX Syslog守护进程等。
  • Layout 负责把事件转换成字符串,格式化的日志信息的输出。

2.等级排序

级别排序为: TRACE < DEBUG < INFO < WARN < ERROR。

关于更多的信息,可以查阅官网。

springboot对logback的支持

springboot默认的日志框架就是logback,并且增强了logback,配置文件命名为logback-spring.xml才能使用spring封装的一些特性。

1.配置application.properties

需求描述: 有两种环境dev,test。 在dev模式下,我们希望把日志直接打印到控制台。 在test模式下,我们希望把日志记录到文件中,每天创建一个日志文件。

# 把环境设为dev模式
spring.profiles.active=dev  

app.name=demo1
app.basedir=/

# linux 下文件路径,test模式下不需要这两个参数
logging.path=/logs
# 文件名使用上面的变量
logging.file=${app.name}

2.配置logback-spring.xml

logback的默认配置在spring-boot-1.5.8.RELEASE.jar包中。 具体路劲是:org.springframework.boot.logging.logback, 此路径下有四个xml配置文件,实际上可以看作一个,因为base.xml引用了其他三个文件。具体的关系,可以参考这篇文章:http://www.jianshu.com/p/077f437eaaca

在resources下创建logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <!-- 开发环境
    springProfile标签是springboot提供的特性,name属性就是在application.properties中配置的spring.profiles.active -->
    <property name="CONSOLE_LOG_DEV" value="${CONSOLE_LOG_DEV:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} [%L] %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    <springProfile name="dev">
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>${CONSOLE_LOG_DEV}</pattern>
                <charset>utf8</charset>
            </encoder>
        </appender>
        <!--<logger name="org.hibernate.type" level="TRACE"/>-->
        <!-- root标签属于Logger对象的一种,因为logger是继承的,root是作为logger的默认配置,相当于父类 -->
        <root level="info">
            <appender-ref ref="CONSOLE" />
        </root>
    </springProfile>


    <!-- 测试环境 -->
    <property name="PATTERN" value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%thread] %c [%L] -| %msg%n" />
    <springProfile name="test">
        <!-- 每天产生一个文件 -->
        <appender name="TEST-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 文件名称 -->
                <fileNamePattern>${LOG_PATH}/${LOG_FILE}.%d{yyyy-MM-dd}.log</fileNamePattern>
                <!-- 文件最大保存历史数量 -->
                <MaxHistory>100</MaxHistory>
            </rollingPolicy>
            <encoder>
                <pattern>${PATTERN}</pattern>
                <charset>utf8</charset>
            </encoder>
        </appender>

        <root level="info">
            <appender-ref ref="TEST-FILE" />
        </root>
    </springProfile>
</configuration>

配置文件中的class属性,在官网文档中有介绍。

参考

文章有错或提问可以反馈到 https://gitee.com/icng/jspBook/issues/IFYZD

展开阅读全文
加载中

作者的其它热门文章

打赏
0
3 收藏
分享
打赏
0 评论
3 收藏
0
分享
返回顶部
顶部