SpringBoot在logback.xml中读取application.properties中配置的日志路径

China☆狼群 提交于 2020-01-24 09:27:23

1、在springboot项目中使用logback记录日志,在logback.xml中配置日志存储位置时读取application.properties中配置的路径,在 logback.xml中配置引用如下:<property name="log.path" value="${path.log}"/>

发现读取不到

2、原因:因为logback.xml的加载顺序早于springboot的application.yml (或application.properties) 配置文件当然读不到application.yml(或application.properties)文件中的值了

3、解决方案:需要通过springProperty标签来引用:<springProperty scope="context" name="log.path" source="path.log"/>

这里的name和上面property标签一样不多说,source其实就是上面的value啦,只不过要注意:千万不要加${}

如果还是读取不到,请把你的logback.xml配置文件名,改为:logback-spring.xml就可以了。

附:logback.xml

<?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>

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!