Swagger3

June 15, 2021 · 0 min · Steven Jiang

Logback Spring

logback-spring.xml <?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <contextName>logback</contextName> <property name="LOG_HOME" value="log"/> <!-- 彩色日志依赖的渲染类 --> <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/> <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/> <!-- 彩色日志格式 --> <property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }) [%t]{magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex"/> <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } --- [%t] %-40.40logger{39} : %m%n%wex"/> <!--输出到控制台--> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> </encoder> </appender> <!--输出到文件--> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/logback.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> <totalSizeCap>1GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!--info 级别的日志--> <!-- 按照每天生成日志文件 --> <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件输出的文件名--> <fileNamePattern>${LOG_HOME}/info.%d{yyyy-MM-dd}.log</fileNamePattern> <!--日志文件保留天数--> <MaxHistory>30</MaxHistory> </rollingPolicy> <!--日志文件最大的大小--> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> </appender> <!--WARN 级别的日志--> <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/warn.%d{yyyy-MM-dd}.log</fileNamePattern> <MaxHistory>30</MaxHistory> </rollingPolicy> </appender> <!--ERROR 级别的日志--> <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/error.%d{yyyy-MM-dd}.log</fileNamePattern> <MaxHistory>30</MaxHistory> </rollingPolicy> </appender> <!-- 测试环境+开发环境. 多个使用逗号隔开. --> <springProfile name="dev,test"> <root level="info"> <appender-ref ref="console"/> <appender-ref ref="file"/> </root> <logger name="com.szht" level="debug"/> </springProfile> <!-- 生产环境. --> <springProfile name="prod"> <root level="info"> <appender-ref ref="INFO"/> <appender-ref ref="WARN"/> <appender-ref ref="ERROR"/> </root> </springProfile> </configuration>

June 15, 2021 · 1 min · Steven Jiang

SpringBoot

June 15, 2021 · 0 min · Steven Jiang

SpringBoot Grade

build.gradle templates plugins { id 'org.springframework.boot' version '2.5.0' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { maven {url 'https://maven.aliyun.com/repository/public'} maven { url 'http://192.168.10.204:8081/repository/maven-public/' allowInsecureProtocol true } mavenCentral() } dependencies { // jpa implementation 'org.springframework.boot:spring-boot-starter-data-jpa' // swagger mplementation 'io.springfox:springfox-boot-starter:3.0.0' // webservice implementation 'org.springframework.boot:spring-boot-starter-web-services' // druid implementation 'com.alibaba:druid-spring-boot-starter:1.2.5' // mybatis and plus implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.4' implementation 'com.baomidou:mybatis-plus-boot-starter:3.4.2' // mybatis dynamic DataSource 多数据源 implementation 'com.baomidou:dynamic-datasource-spring-boot-starter:3.3.2' // rabbitmq implementation 'org.springframework.boot:spring-boot-starter-amqp' testImplementation 'org.springframework.amqp:spring-rabbit-test' // jsoup java spider 爬虫框架 implementation 'org.jsoup:jsoup:1.13.1' // spring mail implementation 'org.springframework.boot:spring-boot-starter-mail' // activemq implementation 'org.springframework.boot:spring-boot-starter-activemq' // activemq next implementation 'org.springframework.boot:spring-boot-starter-artemis' // redis implementation 'org.springframework.boot:spring-boot-starter-data-redis' // thymeleaf implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' // web implementation 'org.springframework.boot:spring-boot-starter-web' // web without tomcat and with undertow implementation ('org.springframework.boot:spring-boot-starter-web'){ exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat' } implementation 'org.springframework.boot:spring-boot-starter-undertow' // common lang3 implementation 'org.apache.commons:commons-lang3:3.12.0' // common codec implementation 'commons-codec:commons-codec:1.15' // fastjson implementation 'com.alibaba:fastjson:1.2.76' // ok http implementation 'com.squareup.okhttp3:okhttp:4.9.1' compileOnly 'org.projectlombok:lombok' developmentOnly 'org.springframework.boot:spring-boot-devtools' // oracle implementation 'com.oracle.database.nls:orai18n:21.1.0.0' runtimeOnly 'com.oracle.database.jdbc:ojdbc8' // mysql runtimeOnly 'mysql:mysql-connector-java' annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } test { useJUnitPlatform() }

June 15, 2021 · 1 min · Steven Jiang