自从将log4j该成logback后,一直在为log存放的路径烦恼,查找了很多资料及logback的example都无法直接定位log存放的位置。查到某些资料说logback在配置文件路径时不可以使用相对路径,这个暂时也没有深究。目前就是需要在配置文件中配置文件放的绝对路径。
<property name="LOG_HOME" value="${webapp.root}"/>
这个变量是在web.xml中配置的context-param。
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>webapp.root</param-value>
</context-param>
为了使这个context-param只需添加listener即可。在使用log4j时,使用org.springframework.web.util.Log4jConfigListener配置,在不使用log4j时,只需要配置org.springframework.web.util.WebAppRootListener将项目路径放入context-param中。
<listener>
<listener-class>org.springframework.web.util.WebAppRootListener</listener-class>
</listener>
通过这样的设置就可以在logback.xml中配置文件的路径了
<property name="LOG_HOME" value="${webapp.root}"/> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>[%-5p] %d{MM-dd HH:mm:ss.SSS} %c{36}:%L - %m%n</pattern> </encoder> </appender> <appender name="infoFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--for further documentation--> <file>${LOG_HOME}/logs/log.log</file> <encoder> <pattern>[%-5p] %d{MM-dd HH:mm:ss.SSS} - %m%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}/logs/log_%d{yyyy-MM-dd}.log</fileNamePattern> </rollingPolicy> </appender>