化石原创文章,转载请注明来源并保留原文链接


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的名字,如果控制台能出信息,文件能创造出来,但是信息在文件中却不存在,可能是该名字不匹配。


化石原创文章,转载请注明来源并保留原文链接