一、application.yml中設置路徑和日誌輸出級別:spring
# 日誌輸出路徑 log: path: /Users/sorin/Desktop/log level: INFO
二、resources目錄下建立logback-spring.xml文件app
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="true" scan="true" scanPeriod="30 seconds"> <springProperty scope="context" name="logLevel" source="log.level"/> <springProperty scope="context" name="logPath" source="log.path"/> <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /> <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /> <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /> <!-- 彩色日誌格式 --> <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" /> <!-- 控制檯輸出 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> <charset>UTF-8</charset> </encoder> </appender> <!-- 系統INFO日誌文件 --> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 過濾器,只打印ERROR級別的日誌 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!--日誌文件輸出的文件名--> <FileNamePattern>${logPath}/info.%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--日誌文件保留天數--> <!--<MaxHistory>15</MaxHistory>--> <!--日誌文件最大的大小--> <MaxFileSize>10MB</MaxFileSize> </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> <logger name="info_error" additivity="true"> <appender-ref ref="INFO_FILE"/> </logger> <!-- 系統錯誤日誌文件 --> <appender name="SYSTEM_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 過濾器,只打印ERROR級別的日誌 --> <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>${logPath}/error.%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--日誌文件保留天數--> <MaxHistory>15</MaxHistory> <!--日誌文件最大的大小--> <MaxFileSize>10MB</MaxFileSize> </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> <logger name="system_error" additivity="true"> <appender-ref ref="SYSTEM_FILE"/> </logger> <!-- 本身打印的日誌文件,用於記錄特殊信息 --> <appender name="PUSH_ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 過濾器,只打印ERROR級別的日誌 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!--日誌文件輸出的文件名--> <FileNamePattern>${LOG_HOME}/push_error.%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!--日誌文件保留天數--> <MaxHistory>15</MaxHistory> <!--日誌文件最大的大小--> <MaxFileSize>10MB</MaxFileSize> </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> <logger name="push_error" additivity="true"> <appender-ref ref="PUSH_ERROR_FILE"/> </logger> <!-- 開發環境下的日誌配置 --> <springProfile name="dev"> <root level="${logLevel}"> <appender-ref ref="CONSOLE" /> <appender-ref ref="SYSTEM_FILE" /> <appender-ref ref="INFO_FILE" /> </root> </springProfile> <!-- 生產環境下的日誌配置 --> <springProfile name="pro"> <root level="${logLevel}"> <appender-ref ref="CONSOLE" /> <appender-ref ref="SYSTEM_FILE" /> <appender-ref ref="INFO_FILE" /> </root> </springProfile> <!-- 仿真環境下的日誌配置 --> <springProfile name="test"> <root level="${logLevel}"> <appender-ref ref="CONSOLE" /> <appender-ref ref="SYSTEM_FILE" /> <appender-ref ref="INFO_FILE" /> </root> </springProfile> </configuration>
三、建立LogUtil類,添加自定義日誌輸出方法spa
public static void printPushErrorLog(String message){ Logger logger = LoggerFactory.getLogger("push_error"); StringBuffer logOut = new StringBuffer(); logOut.append(message); logger.info(logOut.toString()); }