pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.group</groupId>
<artifactId>WindDevelop</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>WindDevelop Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<slf4j.version>1.7.21</slf4j.version>
<logback.version>1.1.7</logback.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
</dependencies>
<build>
<finalName>WindDevelop</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<display-name>Archetype Created Web Application</display-name>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:logback.xml</param-value>
<listener>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener>
</context-param>
<filter>
<filter-name>WindFilter</filter-name>
<display-name>WindFilter</display-name>
<description></description>
<filter-class>net.web.WindFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>WindFilter</filter-name>
<url-pattern>/yes/enterpage.jsp</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>WindServlet</servlet-name>
<display-name>WindServlet</display-name>
<description></description>
<servlet-class>net.web.WindServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>WindServlet</servlet-name>
<url-pattern>/yes/enterpage.jsp</url-pattern>
</servlet-mapping>
</web-app>
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOG_HOME" value="D:/OxygenWork/WindDevelop/logs/" />
<!-- console 控制台输出 日志 -->
<!-- log文件保存日志 -->
<appender name="consoleOut" 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>
</appender>
<appender name="fileOut"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 设置滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名 -->
<fileNamePattern>${LOG_HOME}/WindWeb.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>30MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- 日志输出级别 ,哪些appender生效?这里配置 -->
<root level="ALL">
<appender-ref ref="consoleOut" />
<appender-ref ref="fileOut" />
</root>
</configuration>
package net.infopack;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LogTest {
final static Logger logger = LoggerFactory.getLogger(LogTest.class);
public void fLogCheck(String str) {
//String s1 = str + "shut the fk up!";
}
public static void main(String[] args) {
// TODO Auto-generated method stub
logger.info("logback 成功了");
logger.error("logback 成功了");
logger.debug("logback 成功了");
logger.info("-----------------------");
}
}
package net.infopack;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
public class InfoWrapper extends HttpServletRequestWrapper {
private Map<String, String[]> paramMap;
public InfoWrapper(HttpServletRequest request) {
super(request);
paramMap = new HashMap<>();//定义
paramMap.putAll(request.getParameterMap());//初始化
}
@Override
public String getParameter(String name) {
String[] values = paramMap.get(name);
if (values == null || values.length == 0) {
return null;
}
return values[0];
}
@Override
public String[] getParameterValues(String name) {
return paramMap.get(name);
}
@Override
public Enumeration<String> getParameterNames() {
return new Enumeration<String>() {
private Iterator<String> iterator = paramMap.keySet().iterator();
@Override
public boolean hasMoreElements() {
return iterator.hasNext();
}
@Override
public String nextElement() {
return iterator.next();
}
};
}
@Override
public Map<String, String[]> getParameterMap() {
return paramMap;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}