springboot快速集成日志框架

1.在项目中引入依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </dependency>

2.添加配置文件

RESOURCES目录下添加

logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 文件输出格式 -->
    <property name="PATTERN" value="%-5level [%d{HH:mm:ss.SSS}] [%thread] %logger{36} - %M %L %msg%n" />
    <property name="HTML_PATTERN" value="%-5level%d{HH:mm:ss.SSS}%thread%logger{36}%M%L%msg" />
    <property name="LOG_PATH" value="/usr/local/mgsys/app" />
    <property name="LOCAL_PATH" value="D:\\erp\\signLog" />
    <!-- 测试环境+开发环境. 多个使用逗号隔开. -->
    <springProfile name="test,dev">
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder charset="UTF-8">
                <pattern>${PATTERN}</pattern>
            </encoder>
        </appender>


        <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!--            根据是时间进行拆分-->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!--                对日志进行压缩保存-->
                <fileNamePattern>${LOCAL_PATH}/info.%d{yyyy-MM-dd}.html.gz</fileNamePattern>
                <!--                保存30个文件-->
                <maxHistory>30</maxHistory>
            </rollingPolicy>
            <!--            自定义输出处理器-->
            <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder" charset="UTF-8" >
                <!--                以html格式输出-->
                <layout class="ch.qos.logback.classic.html.HTMLLayout">
                    <pattern>${HTML_PATTERN}</pattern>
                </layout>
            </encoder>
            <!--            过滤  info文件中都是低于info的-->
            <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印信息日志 -->
                <level>INFO</level>
                <!--                高于info的放行-->
                <onMatch>ACCEPT</onMatch>
                <!--                低于的拦截-->
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
<!--        将自己程序的日志打印到文件中,继承root,同时打印到控制台中-->
        <logger name="com.erp.sign" level="INFO" >
            <appender-ref ref="INFO_FILE" />
        </logger>
<!--        打印sql语句和返回值,到控制台-->
        <logger name="druid.sql" level="DEBUG" additivity="false" >
            <appender-ref ref="CONSOLE" />
        </logger>
<!--        多有日志级别都为info 并且打印到控制台-->
        <root level="INFO">
            <appender-ref ref="CONSOLE" />
        </root>
    </springProfile>
    <!-- 生产环境. -->
    <springProfile name="prod">
<!--        滚动文件输出-->
        <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--            根据是时间进行拆分-->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--                对日志进行压缩保存-->
                <fileNamePattern>${LOCAL_PATH}/info.%d{yyyy-MM-dd}.html.gz</fileNamePattern>
<!--                保存30个文件-->
                <maxHistory>30</maxHistory>
            </rollingPolicy>
<!--            自定义输出处理器-->
            <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder" charset="UTF-8" >
<!--                以html格式输出-->
                <layout class="ch.qos.logback.classic.html.HTMLLayout">
                    <pattern>${HTML_PATTERN}</pattern>
                </layout>
            </encoder>
<!--            过滤  info文件中都是低于info的-->
            <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印信息日志 -->
                <level>INFO</level>
<!--                高于info的放行-->
                <onMatch>ACCEPT</onMatch>
<!--                低于的拦截-->
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
        <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${LOCAL_PATH}/error.%d{yyyy-MM-dd}.html.gz</fileNamePattern>
                <maxHistory>30</maxHistory>
            </rollingPolicy>
            <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder" charset="UTF-8" >
                <layout class="ch.qos.logback.classic.html.HTMLLayout">
                    <pattern>${HTML_PATTERN}</pattern>
                </layout>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 -->
                <level>ERROR</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
        <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${LOCAL_PATH}/warn.%d{yyyy-MM-dd}.html.gz</fileNamePattern>
                <maxHistory>30</maxHistory>
            </rollingPolicy>
            <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder" charset="UTF-8" >
                <layout class="ch.qos.logback.classic.html.HTMLLayout">
                    <pattern>${HTML_PATTERN}</pattern>
                </layout>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 -->
                <level>WARN</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
<!--        异步日志,相当于对INFO_FILE appender的装饰,将所有输出放到阻塞队列中-->
        <appender name="async" class="ch.qos.logback.classic.AsyncAppender">
            <appender-ref ref="INFO_FILE"/>
        </appender>

        <root level="ERROR">
            <appender-ref ref="ERROR_FILE" />
        </root>
<!--        自定义logger  additivity="false" 是否继承root  默认为true继承
            目的是对单独模块的日志输出单独处理,additivity="false" 避免日志重复输出
-->
<!--        appender 的filter级别是用在对同一个包下,级别不同输出到不同文件的处理
            com.erp.sign 包下,所有的info之上的日志信息记录在info file中
            warn级别的日志单独记录在warn file中
-->
        <logger name="com.erp.sign" level="INFO" additivity="false">
            <appender-ref ref="async" />
            <appender-ref ref="WARN_FILE" />
        </logger>
<!--
            如果需要对相同包下,不同级别的日志分别记录,就要添加appender
            如果需要对不同包下的日志分别记录,就要添加自定义logger
-->
    </springProfile>
</configuration>

 

 

3.在配置文件中指定日志配置文件

  logging.config=classpath:logback-spring.xml

 

 

posted @ 2021-01-21 11:20  不知无畏  阅读(201)  评论(0)    收藏  举报