spring boot和spring clould集成logback,根据不同服务模块记录日志

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/IsITMan/article/details/80761023

spring boot 与 spring clould做微服务架构时想要使logback记录不同模块的日志。解决办法:

bootstrap.yml中配置:

logging:
  file: /usr/local/softinstall/abjk/sgplatformLog/logs/${spring.application.name}/

logback-spring.xml中配置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!-- test文件路径 -->
    <property name="test_file_path" value="${LOG_FILE}" />
    <!-- pro文件路径 -->
    <property name="prd_file_path" value="${LOG_FILE}"/>

    <!-- 框架日志级别 -->
    <property name="log.level.frame" value="info"/>
    <!-- 模块日志级别 -->
    <property name="log.level.mudule" value="debug"/>
    <!-- 模块日志级别 -->
    <property name="log.level.sql" value="debug"/>
    <!-- 其它日志级别 -->
    <property name="log.level.other" value="info"/>

    <!-- 本地输出 -->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <!--<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>-->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0} - %msg%n</pattern>
        </layout>
    </appender>

    <!-- 开发环境 -->
    <springProfile name="dev">
        <!-- app日志输出 -->
        <appender name="mobileFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <fileNamePattern>${test_file_path}/%d{yyyy-MM-dd}/mobile/mobile_log_%i.log</fileNamePattern>
                <maxFileSize>20MB</maxFileSize>
                <maxHistory>30</maxHistory>
                <totalSizeCap>1GB</totalSizeCap>
            </rollingPolicy>
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} %level %logger{0} - %msg%n</pattern>
            </encoder>
        </appender>


        <!-- 其它日志 -->
        <appender name="otherFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <fileNamePattern>${test_file_path}/%d{yyyy-MM-dd}/other/other_log_%i.log</fileNamePattern>
                <maxFileSize>20MB</maxFileSize>
                <maxHistory>30</maxHistory>
                <totalSizeCap>1GB</totalSizeCap>
            </rollingPolicy>
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} %level %logger{0} - %msg%n</pattern>
            </encoder>
        </appender>
        <!-- 定义部分的日志级别 -->
        <logger name="org.springframework" level="${log.level.frame}"/>
        <logger name="net.sf.ehcache" level="${log.level.frame}"/>
        <logger name="org.apache.shiro" level="${log.level.frame}"/>
        <logger name="org.mybatis" level="${log.level.sql}"/>
        <logger name="com.liveneo.sgplatform.base.dao" level="${log.level.sql}"/>

        <root level="${log.level.other}">
            <appender-ref ref="stdout"/>
            <appender-ref ref="otherFile"/>
        </root>

        <logger name="mobileLog" level="${log.level.mudule}" additivity="false">
            <appender-ref ref="stdout"/>
            <appender-ref ref="mobileFile"/>
        </logger>
    </springProfile>



    <!-- 测试环境 -->
    <springProfile name="test">
        <!-- app日志输出 -->
        <appender name="mobileFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <fileNamePattern>${prd_file_path}/%d{yyyy-MM-dd}/mobile/mobile_log_%i.log</fileNamePattern>
                <maxFileSize>20MB</maxFileSize>
                <maxHistory>30</maxHistory>
                <totalSizeCap>1GB</totalSizeCap>
            </rollingPolicy>
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} %level %logger{0} - %msg%n</pattern>
            </encoder>
        </appender>


        <!-- 其它日志 -->
        <appender name="otherFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <fileNamePattern>${prd_file_path}/%d{yyyy-MM-dd}/other/other_log_%i.log</fileNamePattern>
                <maxFileSize>20MB</maxFileSize>
                <maxHistory>30</maxHistory>
                <totalSizeCap>1GB</totalSizeCap>
            </rollingPolicy>
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} %level %logger{0} - %msg%n</pattern>
            </encoder>
        </appender>
        <!-- 定义部分的日志级别 -->
        <logger name="org.springframework" level="${log.level.frame}"/>
        <logger name="net.sf.ehcache" level="${log.level.frame}"/>
        <logger name="org.apache.shiro" level="${log.level.frame}"/>
        <logger name="org.mybatis" level="${log.level.sql}"/>
        <logger name="com.liveneo.sgplatform.base.dao" level="${log.level.sql}"/>

        <root level="${log.level.other}">
            <appender-ref ref="stdout"/>
            <appender-ref ref="otherFile"/>
        </root>

        <logger name="mobileLog" level="${log.level.mudule}" additivity="false">
            <appender-ref ref="stdout"/>
            <appender-ref ref="mobileFile"/>
        </logger>
    </springProfile>

    <!-- 生产环境 -->
    <springProfile name="prod">
        <!-- app日志输出 -->
        <appender name="mobileFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <fileNamePattern>${prd_file_path}/%d{yyyy-MM-dd}/mobile/mobile_log_%i.log</fileNamePattern>
                <maxFileSize>20MB</maxFileSize>
            </rollingPolicy>
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} %level %logger{0} - %msg%n</pattern>
            </encoder>
        </appender>


        <!-- 其它日志 -->
        <appender name="otherFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <fileNamePattern>${prd_file_path}/%d{yyyy-MM-dd}/other/other_log_%i.log</fileNamePattern>
                <maxFileSize>20MB</maxFileSize>
            </rollingPolicy>
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} %level %logger{0} - %msg%n</pattern>
            </encoder>
        </appender>
        <!-- 定义部分的日志级别 -->
        <logger name="org.springframework" level="${log.level.frame}"/>
        <logger name="net.sf.ehcache" level="${log.level.frame}"/>
        <logger name="org.apache.shiro" level="${log.level.frame}"/>
        <logger name="org.mybatis" level="${log.level.sql}"/>
        <logger name="com.liveneo.sgplatform.base.dao" level="${log.level.sql}"/>

        <root level="${log.level.other}">
            <appender-ref ref="stdout"/>
            <appender-ref ref="otherFile"/>
        </root>

        <logger name="mobileLog" level="${log.level.mudule}" additivity="false">
            <appender-ref ref="stdout"/>
            <appender-ref ref="mobileFile"/>
        </logger>
    </springProfile>
</configuration>

其中${LOG_FILE}为获取的bootstrap.yml中的logging:file:的配置信息。

项目结构大致为:

参考:https://my.oschina.net/u/3226688/blog/904200

猜你喜欢

转载自blog.csdn.net/IsITMan/article/details/80761023