1、Tomcat根据url请求得到当前目录位置,比如url请求是/free,那么当前位置就是/
2、ftl中的涉及的所有文件的路径计算,如果不是绝对路径,那么就以上面计算出的位置为前置,添加ftl中的路径为全路径,搜索资源。
spring boot默认使用logback,所以要把默认的log先排除在外。
1、pom.xml中start_web库去除默认log
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency>
2、resources下放置log4j2.xml,内容例子
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN" monitorInterval="30"> <Properties> <Property name="LOG_PATTERN">%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %p %m%n</Property> <Property name="APP_LOG_ROOT">c:/temp</Property> </Properties> <Appenders> <Console name="Console" target="SYSTEM_OUT" follow="true"> <PatternLayout pattern="${LOG_PATTERN}" /> </Console> <RollingFile name="appLog" fileName="${APP_LOG_ROOT}/SpringBoot2App/application.log" filePattern="${APP_LOG_ROOT}/SpringBoot2App/application-%d{yyyy-MM-dd}-%i.log"> <PatternLayout pattern="${LOG_PATTERN}" /> <Policies> <SizeBasedTriggeringPolicy size="19500KB" /> </Policies> <DefaultRolloverStrategy max="1" /> </RollingFile> </Appenders> <Loggers> <Logger name="test" additivity="false"> <AppenderRef ref="appLog" /> <AppenderRef ref="Console" /> </Logger> <Root level="debug"> <AppenderRef ref="Console" /> </Root> </Loggers> </Configuration>
该配置会在控制台和硬盘上同时log出信息来。
3、在@SpringBootApplication的类里面初始化:
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class MainApplicationClass extends SpringBootServletInitializer { private static final Logger LOGGER = LogManager.getLogger("test"); public static void main(String[] args) { SpringApplication.run(MainApplicationClass.class, args); for (int i = 0; i < 1000; ++i) { LOGGER.info("A message for information."); LOGGER.debug("A message for debug."); LOGGER.error("A message for error."); } } }
注意上面的getLogger的参数,必须对应到log4j2.xml中的logger的名字,如果控制台能出信息,文件能创造出来,但是信息在文件中却不存在,可能是该名字不匹配。