| @@ -0,0 +1,62 @@ | |||
| <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> | |||
| <modelVersion>4.0.0</modelVersion> | |||
| <parent> | |||
| <groupId>org.springframework.boot</groupId> | |||
| <artifactId>spring-boot-starter-parent</artifactId> | |||
| <version>2.0.3.RELEASE</version> | |||
| <relativePath/> <!-- lookup parent from repository --> | |||
| </parent> | |||
| <groupId>com.example</groupId> | |||
| <artifactId>springBootDemo</artifactId> | |||
| <version>0.0.1-SNAPSHOT</version> | |||
| <name>springBootDemo</name> | |||
| <description>Demo project for Spring Boot</description> | |||
| <dependencies> | |||
| <dependency> | |||
| <groupId>org.springframework.boot</groupId> | |||
| <artifactId>spring-boot-starter-web</artifactId> | |||
| </dependency> | |||
| <dependency> | |||
| <groupId>org.projectlombok</groupId> | |||
| <artifactId>lombok</artifactId> | |||
| <optional>true</optional> | |||
| </dependency> | |||
| <dependency> | |||
| <groupId>org.springframework.boot</groupId> | |||
| <artifactId>spring-boot-starter-test</artifactId> | |||
| <scope>test</scope> | |||
| </dependency> | |||
| <!-- <dependency>--> | |||
| <!-- <groupId>de.codecentric</groupId>--> | |||
| <!-- <artifactId>spring-boot-admin-starter-client</artifactId>--> | |||
| <!-- <version>2.0.3</version>--> | |||
| <!-- </dependency>--> | |||
| <!-- <dependency>--> | |||
| <!-- <groupId>org.springframework.boot</groupId>--> | |||
| <!-- <artifactId>spring-boot-starter-actuator</artifactId>--> | |||
| <!-- </dependency>--> | |||
| </dependencies> | |||
| <build> | |||
| <plugins> | |||
| <plugin> | |||
| <groupId>org.springframework.boot</groupId> | |||
| <artifactId>spring-boot-maven-plugin</artifactId> | |||
| <configuration> | |||
| <excludes> | |||
| <exclude> | |||
| <groupId>org.projectlombok</groupId> | |||
| <artifactId>lombok</artifactId> | |||
| </exclude> | |||
| </excludes> | |||
| </configuration> | |||
| </plugin> | |||
| </plugins> | |||
| </build> | |||
| </project> | |||
| @@ -0,0 +1,13 @@ | |||
| package com.example.springbootdemo; | |||
| import org.springframework.boot.SpringApplication; | |||
| import org.springframework.boot.autoconfigure.SpringBootApplication; | |||
| @SpringBootApplication | |||
| public class SpringBootDemoApplication { | |||
| public static void main(String[] args) { | |||
| SpringApplication.run(SpringBootDemoApplication.class, args); | |||
| } | |||
| } | |||
| @@ -0,0 +1,25 @@ | |||
| package com.example.springbootdemo.controller; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.web.bind.annotation.GetMapping; | |||
| import org.springframework.web.bind.annotation.RestController; | |||
| @RestController | |||
| public class HelloController { | |||
| private final Logger logger = LoggerFactory.getLogger(HelloController.class); | |||
| @GetMapping("/") | |||
| public String index() { | |||
| logger.info("a log : Greetings from Spring Boot"); | |||
| return "Greetings from Spring Boot!"; | |||
| } | |||
| @GetMapping("/healthcheck") | |||
| public String healthcheck() { | |||
| logger.error("a log : Call error"); | |||
| return "Greetings from Spring Boot! Call error"; | |||
| } | |||
| } | |||
| @@ -0,0 +1,9 @@ | |||
| server.port=8081 | |||
| logging.config=classpath:logback-spring.xml | |||
| log.path=logs | |||
| # FALSE同步;FILE异步 | |||
| log.async.file=FILE | |||
| @@ -0,0 +1,76 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <configuration> | |||
| <springProperty scope="context" name="logPath" source="log.path"/> | |||
| <springProperty scope="context" name="isAsync" source="log.async.file"/> | |||
| <property name="logPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger-%msg%n"/> | |||
| <!-- 标准输出 --> | |||
| <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | |||
| <encoder> | |||
| <pattern>${logPattern}</pattern> | |||
| </encoder> | |||
| </appender> | |||
| <appender name="FALSE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | |||
| </appender> | |||
| <!-- 日志按天生成 --> | |||
| <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | |||
| <encoder> | |||
| <pattern>${logPattern}</pattern> | |||
| <charset>UTF-8</charset> | |||
| </encoder> | |||
| <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> | |||
| <fileNamePattern>${logPath}/demolog.%d{yyyy-MM-dd}-%i.log</fileNamePattern> | |||
| <maxHistory>7</maxHistory> | |||
| <maxFileSize>100MB</maxFileSize> | |||
| <totalSizeCap>1GB</totalSizeCap> | |||
| </rollingPolicy> | |||
| <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> | |||
| <level>ERROR</level> | |||
| </filter> | |||
| </appender> | |||
| <!-- 异步输出 --> | |||
| <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"> | |||
| <!-- 默认如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志,若要保留全部日志,设置为0 --> | |||
| <discardingThreshold>0</discardingThreshold> | |||
| <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --> | |||
| <queueSize>512</queueSize> | |||
| <!-- 往队列添加时,是否block,默认false[blockingQueue.put],当队列满了后需要等待;如果设为true[blockingQueue.offer],不等待,直接丢弃数据 --> | |||
| <neverBlock>false</neverBlock> | |||
| <!--是否打印调用方信息--> | |||
| <includeCallerData>false</includeCallerData> | |||
| <!-- 添加附加的appender,最多只能添加一个 --> | |||
| <appender-ref ref="${isAsync}"/> | |||
| </appender> | |||
| <!-- 错误日志单独再记录,以便当前的日志分析报警 --> | |||
| <!-- <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">--> | |||
| <!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">--> | |||
| <!-- <level>ERROR</level>--> | |||
| <!-- </filter>--> | |||
| <!-- <encoder>--> | |||
| <!-- <pattern>${logPattern}</pattern>--> | |||
| <!-- </encoder>--> | |||
| <!-- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">--> | |||
| <!-- <fileNamePattern>${logPath}/error.%d{yyyy-MM-dd}.log</fileNamePattern>--> | |||
| <!-- <maxHistory>7</maxHistory>--> | |||
| <!-- </rollingPolicy>--> | |||
| <!-- </appender>--> | |||
| <!-- 屏蔽框架输出 --> | |||
| <!-- <logger name="ch.qos.logback" level="OFF"/>--> | |||
| <!-- <logger name="org.apache.ibatis" level="INFO"/>--> | |||
| <!-- <logger name="tk.mybatis.mapper" level="INFO"/>--> | |||
| <!-- <logger name="org.mybatis.spring" level="INFO"/>--> | |||
| <root> | |||
| <level value="INFO"/> | |||
| <appender-ref ref="FILE"/> | |||
| <!-- <appender-ref ref="error"/>--> | |||
| <appender-ref ref="STDOUT"/> | |||
| </root> | |||
| </configuration> | |||
| @@ -0,0 +1,13 @@ | |||
| package com.example.springbootdemo; | |||
| import org.junit.Test; | |||
| import org.springframework.boot.test.context.SpringBootTest; | |||
| @SpringBootTest | |||
| class SpringBootDemoApplicationTests { | |||
| @Test | |||
| void contextLoads() { | |||
| } | |||
| } | |||