这里贴一下配置,使用 slf4j 接口
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="true"> <property name="PROJECT_NAME" value="predict-service"/> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern> [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %highlight([%-5level] %logger{50} - %msg%n) </pattern> <charset>UTF-8</charset> </encoder> </appender> <springProfile name="dev"> <property name="LOG_HOME" value="D:\\logs"/> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/${PROJECT_NAME}/${PROJECT_NAME}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!--日志文件输出的文件名--> <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}/${PROJECT_NAME}.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern> <maxFileSize>10MB</maxFileSize> <!--日志文件保留天数--> <maxHistory>15</maxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="FILE-ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/${PROJECT_NAME}/${PROJECT_NAME}-error.log</file> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!--日志文件输出的文件名--> <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}/${PROJECT_NAME}-error.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern> <maxFileSize>10MB</maxFileSize> <!--日志文件保留天数--> <maxHistory>15</maxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender> <root level="debug"> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE"/> <appender-ref ref="FILE-ERROR"/> </root> </springProfile> <springProfile name="prod"> <property name="LOG_HOME" value="/opt/logs"/> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/${PROJECT_NAME}/${PROJECT_NAME}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!--日志文件输出的文件名--> <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}/${PROJECT_NAME}.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern> <maxFileSize>10MB</maxFileSize> <!--日志文件保留天数--> <maxHistory>15</maxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="FILE-ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/${PROJECT_NAME}/${PROJECT_NAME}-error.log</file> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!--日志文件输出的文件名--> <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}/${PROJECT_NAME}-error.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern> <maxFileSize>10MB</maxFileSize> <!--日志文件保留天数--> <maxHistory>15</maxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender> <root level="INFO"> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE"/> <appender-ref ref="FILE-ERROR"/> </root> </springProfile> </configuration>