主项目Logback
logback-spring-dev.xml
<configuration><include resource="org/springframework/boot/logging/logback/defaults.xml" /><include resource="logback-child-log.xml" /><springProperty scope="context" name="SYSLOG_FILE" source="logging.file" defaultValue="/opt/app.log" /><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><!-- log pattern --><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} @project.name@ ${MY_POD_NAME} %thread %logger{36} %-5level %msg%n</pattern></encoder></appender><root level="${logging.level.root}"><appender-ref ref="console" /></root>
</configuration>
子项目Logback
logback-child-log.xml
<?xml version="1.0" encoding="UTF-8"?>
<included><!-- 演示按时间滚动的策略 --><appender name="logicFile" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>/opt/logic_app.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>/opt/logs/@project.name@/logic_app.${MY_POD_NAME}.%d{yyyy-MM-dd}.log</fileNamePattern><!-- 保留 7 天数据,默认无限--><maxHistory>14</maxHistory></rollingPolicy><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} @project.name@ ${MY_POD_NAME} %thread %logger{36} %-5level %msg%n</pattern><charset>UTF-8</charset></encoder></appender><logger name="com.common.LogPrint" additivity="false" level="INFO"><appender-ref ref="logicFile"/></logger></included>
根据子项目中Logback的配置,通过LogPrint类打印的日志,都会打印到指定的文件中,不会打印到主项目的日志文件。
核心需要注意的是,子项目的Logback.xml中的配置,需要使用 标签才可以被主项目引入成功。