版权声明:本文为博主原创文章,未经博主允许不得转载。 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