搭建環境所需配置文件
application.yml:
# 服務器配置
server:
port: 8080
session:
timeout: 30
tomcat:
uri-encoding: UTF-8
max-threads: 0
context-path: /lemon
# spring 數據源配置
spring:
datasource:
# 主數據源
url: jdbc:mysql://localhost:3306/lemon_2?useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
# 配置bdcp 連接池屬性
dbcp2:
initial-size: 5
min-idle: 5
max-wait-millis: 60000
max-total: 30
time-between-eviction-runs-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
max-open-prepared-statements: 20
# jpa 配置
jpa:
database: mysql
show-sql: true
generate-ddl: true
hibernate:
ddl-auto: update
# springMVC 配置
mvc:
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
# 日誌配置文件地址
logging:
config: classpath:static/logback-spring.xml
日誌配置文件:(因爲依賴包問題。使用SpringBoot自帶的logback)
<configuration scan="true">
<!--定義日誌文件的存儲地址 勿在 LogBack 的配置中使用相對路徑-->
<property name="LOG_NAME" value="/home"></property>
<!-- %m輸出的信息,%p日誌級別,%t線程名,%d日期,%c類的全名,,,, -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--<pattern>%d %p (%file:%line\)- %m%n</pattern>-->
<!--格式化輸出:%d:表示日期 %thread:表示線程名 %-5level:級別從左顯示5個字符寬度 %msg:日誌消息 %n:是換行符-->
<pattern>1-%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger - %msg%n</pattern>
<!--<charset>uft-8</charset>-->
</encoder>
</appender>
<!--<include resource="org/springframework/boot/logging/logback/base.xml"/>-->
<contextName>RestAPI</contextName>
<property name="LOG_PATH" value=".log"/>
<!--設置系統日誌目錄-->
<property name="APPDIR" value="lemon2.0"/>
<!--
說明:
1、日誌級別及文件
日誌記錄採用分級記錄,級別與日誌文件名相對應,不同級別的日誌信息記錄到不同的日誌文件中
例如:error級別記錄到log_error_xxx.log或log_error.log(該文件爲當前記錄的日誌文件),而log_error_xxx.log爲歸檔日誌,
日誌文件按日期記錄,同一天內,若日誌文件大小等於或大於2M,則按0、1、2...順序分別命名
例如log-level-2017-12-21.0.log
其它級別的日誌也是如此。
2、文件路徑
若開發、測試用,在Eclipse中運行項目,則到Eclipse的安裝路徑查找logs文件夾,以相對路徑../logs。
若部署到Tomcat下,則在Tomcat下的logs文件中
3、Appender
FILEERROR對應error級別,文件名以log-error-xxx.log形式命名
FILEWARN對應warn級別,文件名以log-warn-xxx.log形式命名
FILEINFO對應info級別,文件名以log-info-xxx.log形式命名
FILEDEBUG對應debug級別,文件名以log-debug-xxx.log形式命名
CONSOLE將日誌信息輸出到控制上,爲方便開發測試使用
-->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!-- 日誌記錄器,日期滾動記錄 -->
<appender name="FILEERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在記錄的日誌文件的路徑及文件名 -->
<file>${LOG_PATH}/${APPDIR}/log_error.log</file>
<!-- 日誌記錄器的滾動策略,按日期,按大小記錄 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 歸檔的日誌文件的路徑,例如今天是2017-12-21日誌,當前寫的日誌文件路徑爲file節點指定,可以將此文件與file指定文件路徑設置爲不同路徑,從而將當前日誌文件或歸檔日誌文件置不同的目錄。
而2017-12-21的日誌文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
<fileNamePattern>${LOG_PATH}/${APPDIR}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 除按日誌記錄之外,還配置了日誌文件不能超過2M,若超過2M,日誌文件會以索引0開始,
命名日誌文件,例如log-error-2017-12-21.0.log -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>2MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 追加方式記錄日誌 -->
<append>true</append>
<!-- 日誌文件的格式 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS}=== %-5level %logger-%M Line:%-4L - %msg
%ex{short}%n
</pattern>
<!--<charset>utf-8</charset>-->
</encoder>
<!-- 此日誌文件只記錄error級別的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 日誌記錄器,日期滾動記錄 -->
<appender name="FILEWARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在記錄的日誌文件的路徑及文件名 -->
<file>${LOG_PATH}/${APPDIR}/log_warn.log</file>
<!-- 日誌記錄器的滾動策略,按日期,按大小記錄 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 歸檔的日誌文件的路徑,例如今天是2017-12-21日誌,當前寫的日誌文件路徑爲file節點指定,可以將此文件與file指定文件路徑設置爲不同路徑,從而將當前日誌文件或歸檔日誌文件置不同的目錄。
而2017-12-21的日誌文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
<fileNamePattern>${LOG_PATH}/${APPDIR}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 除按日誌記錄之外,還配置了日誌文件不能超過2M,若超過2M,日誌文件會以索引0開始,
命名日誌文件,例如log-error-2017-12-21.0.log -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>5MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 追加方式記錄日誌 -->
<append>true</append>
<!-- 日誌文件的格式 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-4L - %msg%n</pattern>
<!--<charset>utf-8</charset>-->
</encoder>
<!-- 此日誌文件只記錄WARN級別的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 日誌記錄器,日期滾動記錄 -->
<appender name="FILEINFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在記錄的日誌文件的路徑及文件名 -->
<file>${LOG_PATH}/${APPDIR}/log_info.log</file>
<!-- 日誌記錄器的滾動策略,按日期,按大小記錄 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 歸檔的日誌文件的路徑,例如今天是2017-12-21日誌,當前寫的日誌文件路徑爲file節點指定,可以將此文件與file指定文件路徑設置爲不同路徑,從而將當前日誌文件或歸檔日誌文件置不同的目錄。
而2017-12-21的日誌文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
<fileNamePattern>${LOG_PATH}/${APPDIR}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 除按日誌記錄之外,還配置了日誌文件不能超過2M,若超過2M,日誌文件會以索引0開始,
命名日誌文件,例如log-error-2017-12-21.0.log -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 追加方式記錄日誌 -->
<append>true</append>
<!-- 日誌文件的格式 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
<!-- <charset>utf-8</charset>-->
</encoder>
<!-- 此日誌文件只記錄info級別的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>info</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--日誌異步到數據庫 -->
<!--<appender name="DBAPPENDER" class="ch.qos.logback.classic.db.DBAppender">-->
<!--<connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">-->
<!--<dataSource class="com.zaxxer.hikari.HikariDataSource">-->
<!--<driverClassName>com.mysql.jdbc.Driver</driverClassName>-->
<!--<jdbcUrl>jdbc:mysql://localhost:3306/albedo-new?useUnicode=true&characterEncoding=utf8&useSSL=false</jdbcUrl>-->
<!--<username>root</username>-->
<!--<password>123456</password>-->
<!--<poolName>HikariPool-logback</poolName>-->
<!--</dataSource>-->
<!--</connectionSource>-->
<!--<!– 此日誌文件只記錄info級別的 –>-->
<!--<filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<!--<level>warn</level>-->
<!--<onMatch>ACCEPT</onMatch>-->
<!--<onMismatch>DENY</onMismatch>-->
<!--</filter>-->
<!--<!– 此日誌文件只記錄info級別的 –>-->
<!--<filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<!--<level>error</level>-->
<!--<onMatch>ACCEPT</onMatch>-->
<!--<onMismatch>DENY</onMismatch>-->
<!--</filter>-->
<!--</appender>-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){red} %clr(%contextName){green} %clr([%thread]) %clr(%-5level)
%clr(%logger{36}){magenta} - %clr(%msg%n)
</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="FILEERROR"/>
<appender-ref ref="FILEWARN"/>
<appender-ref ref="FILEINFO"/>
<!--<appender-ref ref="DBAPPENDER"/>-->
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
gradle基礎依賴包:
apply plugin: 'war'
apply plugin: 'java'
apply plugin: 'eclipse-wtp'
apply plugin: 'org.springframework.boot'
buildscript {
ext {
springBootVersion = '1.5.9.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
group = 'com.lemengxiangju.lemon'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
configurations {
providedRuntime
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-data-jpa') {
exclude module: 'org.springframework.boot:spring-boot-starter-logging'
}
compile('org.springframework.boot:spring-boot-starter-jdbc') {
exclude module: 'org.springframework.boot:spring-boot-starter-logging'
}
compile('org.springframework.boot:spring-boot-starter-web') {
exclude module: 'org.springframework.boot:spring-boot-starter-logging'
exclude module: 'org.apache.tomcat:spring-boot-starter-tomcat'
}
compile('mysql:mysql-connector-java')
compile('org.springframework.boot:spring-boot-starter-tomcat')
// jsp 頁面配置
// https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api
// compile group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.0'
// https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api
// compile group: 'javax.servlet.jsp', name: 'javax.servlet.jsp-api', version: '2.3.2-b02'
// https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl
// compile group: 'javax.servlet.jsp.jstl', name: 'jstl', version: '1.2'
// 配置tomcat jsp 識別。 jsp解析引擎
compile group: 'org.apache.tomcat', name: 'tomcat-jasper', version: '9.0.2'
// https://mvnrepository.com/artifact/junit/junit
// testCompile group: 'junit', name: 'junit', version: '4.12'
// testCompile('org.springframework.boot:spring-boot-starter-test')
// testCompile('org.springframework.restdocs:spring-restdocs-mockmvc')
}