springboot集成logback+slf4j

此处使用springboot版本为1.5.22.RELEASE,高版本可能出现控制台日志打印不出的情况。

pom.xml:仅引入lombok依赖即可,springboot的“爷爷”已经导入了logback和slf4j的依赖。

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.0</version>
        </dependency>

引入lombok依赖是想在类上使用@Slf4j这个注解,它是lombok的,使用该注解可以不写下面这行,直接使用log.,很方便:

private final Logger logger = LoggerFactory.getLogger(当前类名.class);

 

在classpath下加入logback.xml配置文件

 

logback.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 -->
    <property name="LOG_HOME" value="logs"/>
    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
            <pattern>[ %-5level] [%date] [%t] %logger{10} %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <!-- 按照每天生成日志文件 -->

    <appender name="INFO_FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/structure.info.log</file>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <rollingPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/structure.info.log-%d{yyyy-MM-dd}-%i.log
            </fileNamePattern>
            <MaxFileSize>100MB</MaxFileSize>
            <maxHistory>20</maxHistory>
            <totalSizeCap>4GB</totalSizeCap>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>
        <encoder><!-- 必须指定,否则不会往文件输出内容 -->
            <pattern>[ %-5level] [%date] [%t] %logger{10} %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <append>true</append>
    </appender>


    <appender name="ERROR_FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/structure.error.log</file>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <rollingPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/structure.error.log-%d{yyyy-MM-dd}-%i.log
            </fileNamePattern>
            <MaxFileSize>100MB</MaxFileSize>
            <maxHistory>20</maxHistory>
            <totalSizeCap>4GB</totalSizeCap>
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>
        <encoder><!-- 必须指定,否则不会往文件输出内容 -->
            <pattern>[ %-5level] [%date] [%t] %logger{10} %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <append>true</append>
    </appender>

    <springProfile name="dev">
        <!-- 日志输出级别 -->
        <root level="INFO">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="INFO_FILE"/>
            <appender-ref ref="ERROR_FILE"/>
        </root>
    </springProfile>

    <springProfile name="prod">
        <!-- 日志输出级别 -->
        <root level="INFO">
            <appender-ref ref="INFO_FILE"/>
            <appender-ref ref="ERROR_FILE"/>
        </root>
    </springProfile>

</configuration>


版权声明:本文为weixin_42741254原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。