简单的springboot应用,日志,静态资源配置

1.新建Maven项目

2.pom文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6 
 7     <groupId>com.springboot</groupId>
 8     <artifactId>springboot</artifactId>
 9     <version>1.0-SNAPSHOT</version>
10 
11     <!-- Spring boot 父引用-->
12     <parent>
13         <groupId>org.springframework.boot</groupId>
14         <artifactId>spring-boot-starter-parent</artifactId>
15         <version>1.4.1.RELEASE</version>
16     </parent>
17     <dependencies>
18         <!-- Spring boot 核心web-->
19         <dependency>
20             <groupId>org.springframework.boot</groupId>
21             <artifactId>spring-boot-starter-web</artifactId>
22         </dependency>
23         <dependency>
24             <groupId>org.projectlombok</groupId>
25             <artifactId>lombok</artifactId>
26             <version>1.16.18</version>
27         </dependency>
28         <dependency>
29             <groupId>com.alibaba</groupId>
30             <artifactId>fastjson</artifactId>
31             <version>1.2.28</version>
32         </dependency>
33         <dependency>
34             <groupId>org.springframework.boot</groupId>
35             <artifactId>spring-boot-starter-logging</artifactId>
36         </dependency>
37     </dependencies>
38 
39     <build>
40         <plugins>
41             <plugin>
42                 <groupId>org.springframework.boot</groupId>
43                 <artifactId>spring-boot-maven-plugin</artifactId>
44                 <executions>
45                     <execution>
46                         <goals>
47                             <goal>repackage</goal>
48                         </goals>
49                     </execution>
50                 </executions>
51                 <configuration>
52                     <executable>true</executable>
53                 </configuration>
54             </plugin>
55         </plugins>
56     </build>
57     
58 </project>

 3.项目的结构

4.SpringbootApplication.java

 1 package com.springboot;
 2 
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 
 6 /**
 7  * @author luoxianwei
 8  * @date 2018/4/24
 9  */
10 @SpringBootApplication
11 public class SpringbootApplication {
12     public static void main(String[] args) {
13         SpringApplication.run(SpringbootApplication.class,args);
14     }
15 }

 5.application.properties

1 server.port=8081
2 server.servlet-path=/
3 spring.resources.static-locations=classpath:/static/,classpath:/templates/
4 spring.mvc.view.suffix=.html
5 #配置日志
6 #配置日志在resource下的logback.xml文件中
7 #在控制台输出彩色日志
8 spring.output.ansi.enabled=always

6.日志文件配置logback.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!--
 3     Copyright 2010-2011 The myBatis Team
 4     Licensed under the Apache License, Version 2.0 (the "License");
 5     you may not use this file except in compliance with the License.
 6     You may obtain a copy of the License at
 7         http://www.apache.org/licenses/LICENSE-2.0
 8     Unless required by applicable law or agreed to in writing, software
 9     distributed under the License is distributed on an "AS IS" BASIS,
10     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11     See the License for the specific language governing permissions and
12     limitations under the License.
13 -->
14 <configuration>
15     <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
16     <property name="LOG_HOME" value="E:/workspace/selfPractices/springboot/log" />
17 
18 
19     <!-- 彩色日志 -->
20     <!-- 彩色日志依赖的渲染类 -->
21     <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
22     <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
23     <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
24     <!-- 彩色日志格式 -->
25     <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
26     <!-- Console 输出设置 -->
27     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
28         <encoder>
29             <pattern>${CONSOLE_LOG_PATTERN}</pattern>
30             <charset>utf8</charset>
31         </encoder>
32     </appender>
33 
34     <!-- 不用彩色控制台输出 -->
35     <!--<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">-->
36     <!--<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
37     <!--&lt;!&ndash;格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符&ndash;&gt;-->
38     <!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>-->
39     <!--</encoder>-->
40     <!--</appender>-->
41     <!-- 按照每天生成日志文件 -->
42     <appender name="DAYINFO"  class="ch.qos.logback.core.rolling.RollingFileAppender">
43         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
44             <!--日志文件输出的文件名-->
45             <FileNamePattern>${LOG_HOME}/TestSpringBoot_info.log.%d{yyyy-MM-dd}.log</FileNamePattern>
46             <!--日志文件保留天数-->
47             <MaxHistory>30</MaxHistory>
48         </rollingPolicy>
49         <filter class="ch.qos.logback.classic.filter.LevelFilter">
50             <level>info</level>
51             <onMatch>ACCEPT</onMatch>
52             <onMismatch>DENY</onMismatch>
53         </filter>
54         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
55             <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
56             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
57         </encoder>
58         <!--日志文件最大的大小-->
59         <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
60             <MaxFileSize>10MB</MaxFileSize>
61         </triggeringPolicy>
62     </appender>
63 
64     <appender name="DAYERROR"  class="ch.qos.logback.core.rolling.RollingFileAppender">
65         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
66             <!--日志文件输出的文件名-->
67             <FileNamePattern>${LOG_HOME}/TestSpringBoot_error.log.%d{yyyy-MM-dd}.log</FileNamePattern>
68             <!--日志文件保留天数-->
69             <MaxHistory>30</MaxHistory>
70         </rollingPolicy>
71         <filter class="ch.qos.logback.classic.filter.LevelFilter">
72             <level>error</level>
73             <onMatch>ACCEPT</onMatch>
74             <onMismatch>DENY</onMismatch>
75         </filter>
76         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
77             <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
78             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
79         </encoder>
80         <!--日志文件最大的大小-->
81         <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
82             <MaxFileSize>10MB</MaxFileSize>
83         </triggeringPolicy>
84     </appender>
85 
86     <!-- 日志输出级别 -->
87 
88     <root level="INFO">
89         <appender-ref ref="STDOUT" />
90         <appender-ref ref="DAYERROR" />
91         <appender-ref ref="DAYINFO" />
92     </root>
93 </configuration>

7.controller

TestController

 1 package com.springboot.controller;
 2 
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.web.bind.annotation.RequestMapping;
 5 import org.springframework.web.bind.annotation.ResponseBody;
 6 
 7 import java.util.Map;
 8 
 9 /**
10  * @author luoxianwei
11  * @date 2018/4/24
12  */
13 @Controller
14 public class TestController {
15 
16     /**
17      * 返回json字符串
18      * @return
19      */
20     @RequestMapping("/")
21     @ResponseBody
22     public String hello(){
23         return "Hello World!";
24     }
25 
26     /**
27      * https://blog.csdn.net/wangb_java/article/details/71775637
28      * 静态页面
29      * spring boot项目只有src目录,没有webapp目录,会将静态访问(html/图片等)映射到其自动配置的静态目录,如下
30      * /static
31      * /public
32      * /resources
33      * /META-INF/resources
34      *
35      *动态页面
36      * 动态页面需要先请求服务器,访问后台应用程序,然后再转向到页面,比如访问JSP。spring boot建议不要使用JSP,
37      * 默认使用Thymeleaf来做动态页面。
38      *  在pom.xml  中添加Thymeleaf组件
39      * templates目录为spring boot默认配置的动态页面路径。
40      *
41      */
42     /**
43      * 这是请求static下的index页面
44      * 注意:@RequestMapping("/index")中的url和return的值不能一样会报如下错误
45      * javax.servlet.ServletException: Circular view path [/index.html]: would dispatch back to the current handler URL [/index.html] again.
46      * Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)
47      * 参考网址:https://blog.csdn.net/huijianpang/article/details/61193445
48      * @return
49      */
50     @RequestMapping("/index")
51     public String index(){
52         return "/index.html";
53     }
54 
55 }

TestBootController

 1 package com.springboot.controller;
 2 
 3 import com.alibaba.fastjson.JSON;
 4 import com.springboot.model.User;
 5 import com.springboot.service.TestInterFace;
 6 import lombok.extern.slf4j.Slf4j;
 7 import org.springframework.beans.factory.annotation.Autowired;
 8 import org.springframework.stereotype.Controller;
 9 import org.springframework.web.bind.annotation.RequestMapping;
10 import org.springframework.web.bind.annotation.ResponseBody;
11 
12 
13 @Slf4j
14 @Controller
15 public class TestBootController {
16 
17     @Autowired
18     private TestInterFace testInterFace;
19 
20     @RequestMapping("/num")
21     @ResponseBody
22     public int home() {
23         int i = testInterFace.testInterFace();
24         log.info("获取数据 {}",JSON.toJSONString(i));
25         return i;
26     }
27 
28     @RequestMapping("/get")
29     @ResponseBody
30     public User getUser(String id) {
31         long currentTimeMillis = System.currentTimeMillis();
32         log.info("### 获取用户信息开始 ###");
33         log.info("请求参数id : {}",id );
34         User user = testInterFace.testUser();
35         log.info("### 获取用户信息结束,总耗时 {}ms ###",System.currentTimeMillis()-currentTimeMillis);
36         return testInterFace.testUser();
37     }
38 
39 
40 }

猜你喜欢

转载自www.cnblogs.com/jcjssl/p/9380201.html