參考:
https://www.cnblogs.com/EasonJim/p/9159195.html
https://blog.csdn.net/tianyaleixiaowu/article/details/73327752
功能:
- logback使用yml配置
- 配置日志地址
- 將日志推送到遠程日志系統
示例:
application.yml:
appid: 008
logback-spring.xml:
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!-- 說明: 1. 文件的命名和加載順序有關 logback.xml早於application.yml加載,logback-spring.xml晚於application.yml加載 如果logback配置需要使用application.yml中的屬性,需要命名為logback-spring.xml 2. logback使用application.yml中的屬性 使用springProperty才可使用application.yml中的值 可以設置默認值 --> <springProperty scope="context" name="appid" source="appid" defaultValue="007"/> <!--定義日志文件的存儲地址 勿在 LogBack 的配置中使用相對路徑--> <property name="LOG_HOME" value="/home/work/logs/helpdisk"/> <!-- 彩色日志 --> <!-- 彩色日志依賴的渲染類 --> <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="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${CONSOLE_LOG_PATTERN}</pattern> <charset>UTF-8</charset> </encoder> </appender> <!-- 按照每天生成日志文件 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/all.${appid}.log</file> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/otherdays/all.%d{yyyyMMddHH}.log</fileNamePattern> <maxHistory>365</maxHistory> </rollingPolicy> </appender> <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/error.${appid}.log</file> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} {%thread} %-5level %logger{50} - %msg%n</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${LOG_HOME}/otherdays/error.%d{yyyy-MM-dd}.log</FileNamePattern> <MaxHistory>30</MaxHistory> </rollingPolicy> </appender> <!--打印Http請求和響應參數--> <appender name="HTTP_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/http.${appid}.log</file> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{50} - %msg%n</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${LOG_HOME}/otherdays/http.%d{yyyy-MM-dd}.log</FileNamePattern> <MaxHistory>30</MaxHistory> </rollingPolicy> </appender> <appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender"> <syslogHost>${ip}</syslogHost> <port>${port}</port> <facility>LOCAL1</facility> <suffixPattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg</suffixPattern> </appender> <root level="INFO">
<appender-ref ref="SYSLOG"/> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE"/> <appender-ref ref="error"/> </root> </configuration>
附錄:
logback默認配置
<?xml version="1.0" encoding="UTF-8"?> <configuration> <property name="log.home" value="D:\\logs" /> <!-- 彩色日志 --> <!-- 彩色日志依賴的渲染類 --> <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}}" /> <!-- Console 輸出設置 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> <charset>utf8</charset> </encoder> </appender> <!-- 文件保存日志的相關配置 ERROR --> <appender name="ERROR-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 保存日志文件的路徑 --> <!--<file>D:/logs/error/error.log</file>--> <!-- 日志格式 --> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%class:%line] - %m%n</pattern> </encoder> <!-- 日志級別過濾器 --> <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.TimeBasedRollingPolicy"> <!-- 日志文件名格式 --> <fileNamePattern>${log.home}/error/%d{yyyy-MM-dd}-error.log</fileNamePattern> <!-- 最大保存時間:30天--> <maxHistory>30</maxHistory> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <!-- 日志文件最大大小 --> <MaxFileSize>100MB</MaxFileSize> </triggeringPolicy> </appender> <!-- 文件保存日志的相關配置 INFO --> <appender name="INFO-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 保存日志文件的路徑 --> <!--<file>D:/logs/info/info.log</file>--> <!-- 日志格式 --> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%class:%line] - %m%n</pattern> </encoder> <!-- 日志級別過濾器 --> <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.TimeBasedRollingPolicy"> <!-- 日志文件名格式 --> <fileNamePattern>${log.home}/info/%d{yyyy-MM-dd}-info.log</fileNamePattern> <!-- 最大保存時間:30天--> <maxHistory>30</maxHistory> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <!-- 日志文件最大大小 --> <MaxFileSize>100MB</MaxFileSize> </triggeringPolicy> </appender> <!-- 輸出mybatis的sql語句,沒有這句就無法輸出mybatis的sql語句,name屬性指定到要輸出日志的dao,即mybatis要代理的dao --> <logger name="com.cuit.springboot.dao" level="DEBUG" /> <!-- 基於info處理日志:具體控制台或者文件對日志級別的處理還要看所在appender配置的filter,如果沒有配置filter,則使用root配置 --> <root level="info"> <appender-ref ref="STDOUT"/> <appender-ref ref="INFO-OUT" /> <appender-ref ref="ERROR-OUT" /> </root> </configuration>