springboot项目,logback配置文件如下
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date|%thread|%X{invokeNo}|%level|%logger{0}|%msg%n</pattern>
</encoder>
</appender>
<appender name="rollinginfoFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logPath}/${serverName}/${serverName}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${logPath}/${serverName}/${serverName}.%i.log</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>10</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>500MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%date|%thread|%X{invokeNo}|%level|%logger{0}|%msg%n</pattern>
</encoder>
</appender>
<!-- <logger name="cn.htd" level="${loggingLevel}">
<appender-ref ref="rollinginfoFile" />
</logger>
mybatis
<logger name="org.apache.ibatis" level="${loggingLevel}">
<appender-ref ref="rollinginfoFile" />
</logger> -->
<root level="${loggingLevel}">
<appender-ref ref="rollinginfoFile" />
<appender-ref ref="console" />
</root>
<file>${logPath}/${serverName}/${serverName}.log</file>
指定了当前文件的输出路径
<fileNamePattern>${logPath}/${serverName}/${serverName}.%i.log</fileNamePattern>
指定了归档日志的路径
然而启动项目后,发现日志文件并没有输出到指定路径上去,而是输出在本地项目的 XXXIS_UNDEFINED目录下。
问题是由于我们再application.properties中定义的变量,在logback的xml文件中无法直接读取,必须要增加springProperty属性中转一下,增加如下两行
<springProperty scope="context" name="logPath" source="logging.path"/>
<springProperty scope="context" name="serverName" source="server.name"/>
source属性里放的值是application.properties中定义的。
这样修改后日志就能输出到对应的目录下了。