一、在springboot項目中使用logback記錄日誌,在logback.xml中配置日誌存儲位置時讀取application.properties中配置的路徑,在 logback.xml中配置引用以下:<property name="log.path" value="${path.log}"/>java
發現讀取不到spring
二、緣由:由於logback.xml的加載順序早於springboot的application.yml (或application.properties) 配置文件固然讀不到application.yml(或application.properties)文件中的值了sql
三、解決方案:須要經過springProperty標籤來引用:<springProperty scope="context" name="log.path" source="path.log"/>express
這裏的name和上面property標籤同樣很少說,source其實就是上面的value啦,只不過要注意:千萬不要加${}springboot
若是仍是讀取不到,請把你的logback.xml配置文件名,改成:logback-spring.xml就能夠了。app
附:logback.xmlui
<?xml version="1.0" encoding="UTF-8"?><configuration debug="false"> <property resource="application.properties"/> <!--<property name="LOG_HOME" value="${logback.loghome}" />--> <springProperty scope="context" name="LOG_HOME" source="logback.loghome"/> <!--定義日誌文件的存儲地址 勿在 LogBack 的配置中使用相對路徑--> <!--<property name="LOG_HOME" value="c:/crmlog" />--> <!-- 控制檯輸出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <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> </encoder> <!-- 過濾 Druid 的 SQLFeatureNotSupportedException --> <!-- DruidPooledResultSet.getObject() --> <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> <evaluator> <expression>java.sql.SQLFeatureNotSupportedException.class.isInstance(throwable)</expression> </evaluator> <onMatch>DENY</onMatch> </filter> </appender> <!-- 按照天天生成日誌文件 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日誌文件輸出的文件名--> <FileNamePattern>${LOG_HOME}/crm.log.%d{yyyy-MM-dd}.log</FileNamePattern> <!--日誌文件保留天數--> <MaxHistory>30</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> </encoder> <!--日誌文件最大的大小--> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> <evaluator> <expression>java.sql.SQLFeatureNotSupportedException.class.isInstance(throwable)</expression> </evaluator> <onMatch>DENY</onMatch> </filter> </appender> <logger name="druid" level="INFO"> <appender-ref ref="STDOUT"/> </logger> <logger name="org.springframework.jdbc" level="debug"> <appender-ref ref="STDOUT"/> </logger> <!-- 日誌輸出級別 --> <root level="INFO"> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE" /> </root></configuration>