Browse Source

调整不同环境配置

yingp 7 years ago
parent
commit
efb6e853e1
44 changed files with 654 additions and 219 deletions
  1. 26 4
      README.md
  2. 1 1
      applications/commons/commons-dto/pom.xml
  3. 6 2
      applications/commons/commons-server/pom.xml
  4. 6 0
      applications/commons/commons-server/src/main/docker/Dockerfile
  5. 3 2
      applications/commons/commons-server/src/main/resources/application.yml
  6. 10 0
      applications/commons/commons-server/src/main/resources/config/application-docker.yml
  7. 5 2
      applications/document/document-server/pom.xml
  8. 6 2
      applications/document/document-server/src/main/resources/application.yml
  9. 0 42
      applications/document/document-server/src/main/resources/config/application-dev.yml
  10. 4 1
      applications/document/document-server/src/main/resources/config/application-docker.yml
  11. 51 9
      applications/document/document-server/src/main/resources/logback-spring.xml
  12. 1 1
      applications/purchase/purchase-dto/pom.xml
  13. 5 3
      applications/purchase/purchase-server/pom.xml
  14. 6 2
      applications/purchase/purchase-server/src/main/resources/application.yml
  15. 0 42
      applications/purchase/purchase-server/src/main/resources/config/application-dev.yml
  16. 4 1
      applications/purchase/purchase-server/src/main/resources/config/application-docker.yml
  17. 51 9
      applications/purchase/purchase-server/src/main/resources/logback-spring.xml
  18. 4 0
      base-servers/account/account-server/pom.xml
  19. 2 0
      base-servers/account/account-server/src/main/resources/application.yml
  20. 51 9
      base-servers/account/account-server/src/main/resources/logback-spring.xml
  21. 4 0
      base-servers/admin-server/pom.xml
  22. 2 0
      base-servers/admin-server/src/main/resources/application.yml
  23. 51 9
      base-servers/admin-server/src/main/resources/logback-spring.xml
  24. 5 0
      base-servers/auth/auth-server/pom.xml
  25. 2 0
      base-servers/auth/auth-server/src/main/resources/application.yml
  26. 51 9
      base-servers/auth/auth-server/src/main/resources/logback-spring.xml
  27. 4 0
      base-servers/eureka-server/pom.xml
  28. 51 9
      base-servers/eureka-server/src/main/resources/logback-spring.xml
  29. 4 0
      base-servers/gateway-server/pom.xml
  30. 5 2
      base-servers/gateway-server/src/main/resources/application.yml
  31. 4 1
      base-servers/gateway-server/src/main/resources/config/application-docker.yml
  32. 51 9
      base-servers/gateway-server/src/main/resources/logback-spring.xml
  33. 4 0
      base-servers/ui-server/pom.xml
  34. 5 0
      base-servers/ui-server/src/main/java/com/usoftchina/saas/ui/controller/co/CoViewController.java
  35. 5 2
      base-servers/ui-server/src/main/resources/application.yml
  36. 4 1
      base-servers/ui-server/src/main/resources/config/application-docker.yml
  37. 51 9
      base-servers/ui-server/src/main/resources/logback-spring.xml
  38. 4 4
      base-servers/zipkin-server/pom.xml
  39. 7 3
      base-servers/zipkin-server/src/main/java/com/usoftchina/saas/zipkin/ZipkinApplication.java
  40. 20 9
      base-servers/zipkin-server/src/main/resources/application.yml
  41. 8 1
      base-servers/zipkin-server/src/main/resources/config/application-docker.yml
  42. 51 9
      base-servers/zipkin-server/src/main/resources/logback-spring.xml
  43. 12 1
      pom.xml
  44. 7 9
      script/docker-base.yaml

+ 26 - 4
README.md

@@ -5,6 +5,9 @@
 │  │  
 │  ├─applications-----------------------------业务应用
 │  |  ├─commons-------------------------------业务通用
+│  |  |  |─commons-api------------------------业务通用api
+│  |  |  |─commons-dto------------------------业务通用数据传输对象
+│  |  |  |─commons-server---------------------业务通用服务
 │  |  ├─document------------------------------基础资料
 │  |  |  |─document-api-----------------------基础资料api
 │  |  |  |─document-dto-----------------------基础资料数据传输对象
@@ -71,20 +74,39 @@
 | saas_auth | mysql | 192.168.253.12:3306 |  root  | select111*** |  鉴权系统  |
 | saas_biz | mysql | 192.168.253.12:3306 |  root  | select111*** |  业务系统  |
 | saas_ui | mongo | 192.168.253.12:27017 |    |  |  UI配置  |
-| saas_zipkin | mysql | 192.168.253.12:3306 |  root  | select111*** |  服务监控  |
 
 > 中间件
 
 | 类型 | 地址 | 账号 | 密码 | 说明 |
 | ---- | :----: | :----: | :----: | ---- |
-| rabbit | 192.168.0.176:5672 | guest | guest | 消息中间件 |
+| rabbitmq | 192.168.0.176:5672 | saas | select123*** | 消息中间件 [控制台](http://192.168.0.176:15672)|
 
 
 > 服务器
 
-
+| IP      |  账号  |  密码  |  环境  |  资源  |
+| --------   | :----:  | :----: | :------:  | :------:  |
+| 192.168.0.176 |  root  | select123*** |  CentOS7, Docker  | Cpu: 4, Mem: 8G, Disk: 20G |
+| 192.168.0.177 |  root  | select123*** |  CentOS7, Docker  | Cpu: 4, Mem: 8G, Disk: 20G |
+| 192.168.0.178 |  root  | select123*** |  CentOS7, Docker  | Cpu: 4, Mem: 8G, Disk: 20G |
+| 192.168.0.179 |  root  | select123*** |  CentOS7, Docker  | Cpu: 4, Mem: 8G, Disk: 20G |
+| 192.168.0.180 |  root  | select123*** |  CentOS7, Docker  | Cpu: 4, Mem: 8G, Disk: 20G |
+| 192.168.0.181 |  root  | select123*** |  CentOS7, Docker  | Cpu: 4, Mem: 8G, Disk: 80G |
 
 > 构建
 
-[jenkins](http://192.168.0.181:8080/job/saas) **账号** admin **密码** select123***
+* [jenkins](http://192.168.0.181:8080/job/saas) **账号** admin **密码** select123***
+
+> 日志
+
+* [kibana](http://192.168.253.3:5601)
+* [logstash](tcp://192.168.253.3:5000)
+* [elasticsearch](http://192.168.253.3:9200/_search?pretty)
+
+> 服务
+
+* [eureka](http://192.168.0.181:8500) **账号** admin **密码** select111***
+* [admin](http://192.168.0.181:8520) **账号** admin **密码** select111***
+* [zipkin](http://192.168.0.181:8540) **账号** admin **密码** select111***
+
 

+ 1 - 1
applications/commons/commons-dto/pom.xml

@@ -9,7 +9,7 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>commoms-dto</artifactId>
+    <artifactId>commons-dto</artifactId>
     <dependencies>
         <dependency>
             <groupId>com.usoftchina.saas</groupId>

+ 6 - 2
applications/commons/commons-server/pom.xml

@@ -13,8 +13,7 @@
     <dependencies>
         <dependency>
             <groupId>com.usoftchina.saas</groupId>
-            <artifactId>commoms-dto</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
+            <artifactId>commons-dto</artifactId>
         </dependency>
         <dependency>
             <groupId>com.usoftchina.saas</groupId>
@@ -42,6 +41,11 @@
             <groupId>org.springframework.amqp</groupId>
             <artifactId>spring-rabbit</artifactId>
         </dependency>
+        <dependency>
+            <groupId>net.logstash.logback</groupId>
+            <artifactId>logstash-logback-encoder</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>

+ 6 - 0
applications/commons/commons-server/src/main/docker/Dockerfile

@@ -0,0 +1,6 @@
+FROM frolvlad/alpine-oraclejdk8:slim
+VOLUME /tmp
+ADD commons-server-1.0.0-SNAPSHOT.jar app.jar
+RUN sh -c 'touch /app.jar'
+ENV JAVA_OPTS=""
+ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

+ 3 - 2
applications/commons/commons-server/src/main/resources/application.yml

@@ -21,8 +21,9 @@ spring:
   rabbitmq:
     host: 192.168.0.176
     port: 5672
-    password: guest
-    username: guest
+    virtual-host: dev
+    password: saas
+    username: select123***
   zipkin:
     sender:
       type: rabbit

+ 10 - 0
applications/commons/commons-server/src/main/resources/config/application-docker.yml

@@ -0,0 +1,10 @@
+eureka:
+  instance:
+    hostname: saas-commons-server
+    prefer-ip-address: false
+  client:
+    serviceUrl:
+      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@saas-eureka-server:8500/eureka/
+spring:
+  rabbitmq:
+    virtual-host: docker

+ 5 - 2
applications/document/document-server/pom.xml

@@ -43,6 +43,10 @@
             <groupId>org.springframework.amqp</groupId>
             <artifactId>spring-rabbit</artifactId>
         </dependency>
+        <dependency>
+            <groupId>net.logstash.logback</groupId>
+            <artifactId>logstash-logback-encoder</artifactId>
+        </dependency>
 
         <dependency>
             <groupId>com.github.pagehelper</groupId>
@@ -59,8 +63,7 @@
         </dependency>
         <dependency>
             <groupId>com.usoftchina.saas</groupId>
-            <artifactId>commoms-dto</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
+            <artifactId>commons-dto</artifactId>
         </dependency>
     </dependencies>
 

+ 6 - 2
applications/document/document-server/src/main/resources/application.yml

@@ -1,4 +1,6 @@
 spring:
+  profiles:
+    active: dev
   application:
     name: document-server
   security:
@@ -21,8 +23,9 @@ spring:
   rabbitmq:
     host: 192.168.0.176
     port: 5672
-    password: guest
-    username: guest
+    virtual-host: dev
+    password: saas
+    username: select123***
   zipkin:
     sender:
       type: rabbit
@@ -37,6 +40,7 @@ eureka:
     leaseRenewalIntervalInSeconds: 10
     health-check-url-path: /actuator/health
     status-page-url-path: /actuator/info
+    prefer-ip-address: true
     metadata-map:
       user.name: ${spring.security.user.name}
       user.password: ${spring.security.user.password}

+ 0 - 42
applications/document/document-server/src/main/resources/config/application-dev.yml

@@ -1,42 +0,0 @@
-spring:
-  application:
-    name: document-server
-  security:
-    user:
-      name: admin
-      password: select111***
-  datasource:
-    hikari:
-      driver-class-name: com.mysql.cj.jdbc.Driver
-      jdbc-url: jdbc:mysql://192.168.253.12:3306/saas_biz?characterEncoding=utf-8&useSSL=false
-      username: root
-      password: select111***
-  messages:
-    basename: i18n/messages
-eureka:
-  instance:
-    leaseRenewalIntervalInSeconds: 10
-    health-check-url-path: /actuator/health
-    status-page-url-path: /actuator/info
-    metadata-map:
-      user.name: ${spring.security.user.name}
-      user.password: ${spring.security.user.password}
-  client:
-    registryFetchIntervalSeconds: 5
-    serviceUrl:
-      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@192.168.253.12:8500/eureka/
-server:
-  port: 9480
-  tomcat:
-    uri-encoding: UTF-8
-info:
-  name: '@project.artifactId@'
-  description: '@project.description@'
-  version: '@project.version@'
-  spring-boot-version: '@spring.boot.version@'
-  spring-cloud-version: '@spring.cloud.version@'
-mybatis:
-  type-aliases-package: com.usoftchina.saas.document.po
-  mapper-locations: classpath:mapper/*.xml
-auth:
-  publie-key: auth/pub.key

+ 4 - 1
applications/document/document-server/src/main/resources/config/application-docker.yml

@@ -4,4 +4,7 @@ eureka:
     prefer-ip-address: false
   client:
     serviceUrl:
-      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@saas-eureka-server:8500/eureka/
+      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@saas-eureka-server:8500/eureka/
+spring:
+  rabbitmq:
+    virtual-host: docker

+ 51 - 9
applications/document/document-server/src/main/resources/logback-spring.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
-    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
+    <include resource="org/springframework/boot/logging/logback/base.xml" />
     <jmxConfigurator/>
 
     <!--
@@ -28,10 +28,10 @@
     <springProperty scope="context" name="spring.profiles.active" source="spring.profiles.active" defaultValue="dev"/>
     <springProperty scope="context" name="common-pattern" source="logging.common-pattern" defaultValue="%d{yyyy-MM-dd HH:mm:ss.SSS}:[%5p] [%t:%r] [%C{1}:%M:%L] --> %m%n"/>
     <springProperty scope="context" name="log.level.console" source="logging.level.console" defaultValue="INFO"/>
+    <springProperty scope="context" name="log.destination" source="logging.destination" defaultValue="192.168.253.3:5000"/>
 
     <contextName>${spring.application.name}-${spring.profiles.active}-logback</contextName>
 
-
     <appender name="CONSOLE_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>${log.level.console}</level>
@@ -44,11 +44,9 @@
     <appender name="ROOT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${log.path}/root.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <!-- 每天一归档 -->
             <fileNamePattern>${log.path}/%d{yyyy-MM}/root-%d{yyyy-MM-dd}-%i.log.gz</fileNamePattern>
-            <!-- 单个日志文件最多 100MB, 60天的日志周期,最大不能超过20GB -->
             <maxFileSize>128MB</maxFileSize>
-            <maxHistory>60</maxHistory>
+            <maxHistory>7</maxHistory>
             <totalSizeCap>20GB</totalSizeCap>
         </rollingPolicy>
         <encoder>
@@ -56,9 +54,53 @@
         </encoder>
     </appender>
 
-    <root level="${log.level.console}">
-        <appender-ref ref="CONSOLE_APPENDER"/>
-        <appender-ref ref="ROOT_APPENDER"/>
-    </root>
+    <!-- Appender to log in a JSON format -->
+    <appender name="JSON_APPENDER" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
+        <destination>${log.destination}</destination>
+        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
+            <providers>
+                <pattern>
+                    <pattern>
+                        {
+                        "severity": "%level",
+                        "service": "${spring.application.name:-}",
+                        "trace": "%X{X-B3-TraceId:-}",
+                        "span": "%X{X-B3-SpanId:-}",
+                        "parent": "%X{X-B3-ParentSpanId:-}",
+                        "exportable": "%X{X-Span-Export:-}",
+                        "pid": "${PID:-}",
+                        "thread": "%thread",
+                        "class": "%logger{40}",
+                        "rest": "%message"
+                        }
+                    </pattern>
+                </pattern>
+            </providers>
+        </encoder>
+    </appender>
+
+    <logger name="org.springframework" level="INFO"/>
+    <logger name="com.usoftchina.saas" level="INFO"/>
+
+    <springProfile name="dev">
+        <root level="INFO">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="test">
+        <root level="INFO">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+            <appender-ref ref="ROOT_APPENDER"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="docker">
+        <logger name="org.springframework" level="WARN"/>
+        <root level="DEBUG">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+            <appender-ref ref="JSON_APPENDER"/>
+        </root>
+    </springProfile>
 
 </configuration>

+ 1 - 1
applications/purchase/purchase-dto/pom.xml

@@ -15,7 +15,7 @@
     <dependencies>
         <dependency>
             <groupId>com.usoftchina.saas</groupId>
-            <artifactId>commons</artifactId>
+            <artifactId>commons-dto</artifactId>
         </dependency>
         <dependency>
             <groupId>io.springfox</groupId>

+ 5 - 3
applications/purchase/purchase-server/pom.xml

@@ -47,6 +47,10 @@
             <groupId>org.springframework.amqp</groupId>
             <artifactId>spring-rabbit</artifactId>
         </dependency>
+        <dependency>
+            <groupId>net.logstash.logback</groupId>
+            <artifactId>logstash-logback-encoder</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
@@ -62,13 +66,11 @@
         </dependency>
         <dependency>
             <groupId>com.usoftchina.saas</groupId>
-            <artifactId>commoms-dto</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
+            <artifactId>commons-dto</artifactId>
         </dependency>
         <dependency>
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>commons-api</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
         </dependency>
     </dependencies>
 

+ 6 - 2
applications/purchase/purchase-server/src/main/resources/application.yml

@@ -1,4 +1,6 @@
 spring:
+  profiles:
+    active: dev
   application:
     name: purchase-server
   security:
@@ -21,8 +23,9 @@ spring:
   rabbitmq:
     host: 192.168.0.176
     port: 5672
-    password: guest
-    username: guest
+    virtual-host: dev
+    password: saas
+    username: select123***
   zipkin:
     sender:
       type: rabbit
@@ -37,6 +40,7 @@ eureka:
     leaseRenewalIntervalInSeconds: 10
     health-check-url-path: /actuator/health
     status-page-url-path: /actuator/info
+    prefer-ip-address: true
     metadata-map:
       user.name: ${spring.security.user.name}
       user.password: ${spring.security.user.password}

+ 0 - 42
applications/purchase/purchase-server/src/main/resources/config/application-dev.yml

@@ -1,42 +0,0 @@
-spring:
-  application:
-    name: purchase-server
-  security:
-    user:
-      name: admin
-      password: select111***
-  datasource:
-    hikari:
-      driver-class-name: com.mysql.cj.jdbc.Driver
-      jdbc-url: jdbc:mysql://192.168.253.12:3306/saas_biz?characterEncoding=utf-8&useSSL=false
-      username: root
-      password: select111***
-  messages:
-    basename: i18n/messages
-eureka:
-  instance:
-    leaseRenewalIntervalInSeconds: 10
-    health-check-url-path: /actuator/health
-    status-page-url-path: /actuator/info
-    metadata-map:
-      user.name: ${spring.security.user.name}
-      user.password: ${spring.security.user.password}
-  client:
-    registryFetchIntervalSeconds: 5
-    serviceUrl:
-      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@192.168.253.12:8500/eureka/
-server:
-  port: 8580
-  tomcat:
-    uri-encoding: UTF-8
-info:
-  name: '@project.artifactId@'
-  description: '@project.description@'
-  version: '@project.version@'
-  spring-boot-version: '@spring.boot.version@'
-  spring-cloud-version: '@spring.cloud.version@'
-mybatis:
-  type-aliases-package: com.usoftchina.saas.purchase.po
-  mapper-locations: classpath:mapper/*.xml
-auth:
-  publie-key: auth/pub.key

+ 4 - 1
applications/purchase/purchase-server/src/main/resources/config/application-docker.yml

@@ -4,4 +4,7 @@ eureka:
     prefer-ip-address: false
   client:
     serviceUrl:
-      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@saas-eureka-server:8500/eureka/
+      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@saas-eureka-server:8500/eureka/
+spring:
+  rabbitmq:
+    virtual-host: docker

+ 51 - 9
applications/purchase/purchase-server/src/main/resources/logback-spring.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
-    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
+    <include resource="org/springframework/boot/logging/logback/base.xml" />
     <jmxConfigurator/>
 
     <!--
@@ -28,10 +28,10 @@
     <springProperty scope="context" name="spring.profiles.active" source="spring.profiles.active" defaultValue="dev"/>
     <springProperty scope="context" name="common-pattern" source="logging.common-pattern" defaultValue="%d{yyyy-MM-dd HH:mm:ss.SSS}:[%5p] [%t:%r] [%C{1}:%M:%L] --> %m%n"/>
     <springProperty scope="context" name="log.level.console" source="logging.level.console" defaultValue="INFO"/>
+    <springProperty scope="context" name="log.destination" source="logging.destination" defaultValue="192.168.253.3:5000"/>
 
     <contextName>${spring.application.name}-${spring.profiles.active}-logback</contextName>
 
-
     <appender name="CONSOLE_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>${log.level.console}</level>
@@ -44,11 +44,9 @@
     <appender name="ROOT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${log.path}/root.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <!-- 每天一归档 -->
             <fileNamePattern>${log.path}/%d{yyyy-MM}/root-%d{yyyy-MM-dd}-%i.log.gz</fileNamePattern>
-            <!-- 单个日志文件最多 100MB, 60天的日志周期,最大不能超过20GB -->
             <maxFileSize>128MB</maxFileSize>
-            <maxHistory>60</maxHistory>
+            <maxHistory>7</maxHistory>
             <totalSizeCap>20GB</totalSizeCap>
         </rollingPolicy>
         <encoder>
@@ -56,9 +54,53 @@
         </encoder>
     </appender>
 
-    <root level="${log.level.console}">
-        <appender-ref ref="CONSOLE_APPENDER"/>
-        <appender-ref ref="ROOT_APPENDER"/>
-    </root>
+    <!-- Appender to log in a JSON format -->
+    <appender name="JSON_APPENDER" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
+        <destination>${log.destination}</destination>
+        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
+            <providers>
+                <pattern>
+                    <pattern>
+                        {
+                        "severity": "%level",
+                        "service": "${spring.application.name:-}",
+                        "trace": "%X{X-B3-TraceId:-}",
+                        "span": "%X{X-B3-SpanId:-}",
+                        "parent": "%X{X-B3-ParentSpanId:-}",
+                        "exportable": "%X{X-Span-Export:-}",
+                        "pid": "${PID:-}",
+                        "thread": "%thread",
+                        "class": "%logger{40}",
+                        "rest": "%message"
+                        }
+                    </pattern>
+                </pattern>
+            </providers>
+        </encoder>
+    </appender>
+
+    <logger name="org.springframework" level="INFO"/>
+    <logger name="com.usoftchina.saas" level="INFO"/>
+
+    <springProfile name="dev">
+        <root level="INFO">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="test">
+        <root level="INFO">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+            <appender-ref ref="ROOT_APPENDER"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="docker">
+        <logger name="org.springframework" level="WARN"/>
+        <root level="DEBUG">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+            <appender-ref ref="JSON_APPENDER"/>
+        </root>
+    </springProfile>
 
 </configuration>

+ 4 - 0
base-servers/account/account-server/pom.xml

@@ -39,6 +39,10 @@
             <groupId>org.springframework.amqp</groupId>
             <artifactId>spring-rabbit</artifactId>
         </dependency>
+        <dependency>
+            <groupId>net.logstash.logback</groupId>
+            <artifactId>logstash-logback-encoder</artifactId>
+        </dependency>
     </dependencies>
     <build>
         <plugins>

+ 2 - 0
base-servers/account/account-server/src/main/resources/application.yml

@@ -1,4 +1,6 @@
 spring:
+  profiles:
+    active: dev
   application:
     name: account-server
   security:

+ 51 - 9
base-servers/account/account-server/src/main/resources/logback-spring.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
-    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
+    <include resource="org/springframework/boot/logging/logback/base.xml" />
     <jmxConfigurator/>
 
     <!--
@@ -28,10 +28,10 @@
     <springProperty scope="context" name="spring.profiles.active" source="spring.profiles.active" defaultValue="dev"/>
     <springProperty scope="context" name="common-pattern" source="logging.common-pattern" defaultValue="%d{yyyy-MM-dd HH:mm:ss.SSS}:[%5p] [%t:%r] [%C{1}:%M:%L] --> %m%n"/>
     <springProperty scope="context" name="log.level.console" source="logging.level.console" defaultValue="INFO"/>
+    <springProperty scope="context" name="log.destination" source="logging.destination" defaultValue="192.168.253.3:5000"/>
 
     <contextName>${spring.application.name}-${spring.profiles.active}-logback</contextName>
 
-
     <appender name="CONSOLE_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>${log.level.console}</level>
@@ -44,11 +44,9 @@
     <appender name="ROOT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${log.path}/root.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <!-- 每天一归档 -->
             <fileNamePattern>${log.path}/%d{yyyy-MM}/root-%d{yyyy-MM-dd}-%i.log.gz</fileNamePattern>
-            <!-- 单个日志文件最多 100MB, 60天的日志周期,最大不能超过20GB -->
             <maxFileSize>128MB</maxFileSize>
-            <maxHistory>60</maxHistory>
+            <maxHistory>7</maxHistory>
             <totalSizeCap>20GB</totalSizeCap>
         </rollingPolicy>
         <encoder>
@@ -56,9 +54,53 @@
         </encoder>
     </appender>
 
-    <root level="${log.level.console}">
-        <appender-ref ref="CONSOLE_APPENDER"/>
-        <appender-ref ref="ROOT_APPENDER"/>
-    </root>
+    <!-- Appender to log in a JSON format -->
+    <appender name="JSON_APPENDER" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
+        <destination>${log.destination}</destination>
+        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
+            <providers>
+                <pattern>
+                    <pattern>
+                        {
+                        "severity": "%level",
+                        "service": "${spring.application.name:-}",
+                        "trace": "%X{X-B3-TraceId:-}",
+                        "span": "%X{X-B3-SpanId:-}",
+                        "parent": "%X{X-B3-ParentSpanId:-}",
+                        "exportable": "%X{X-Span-Export:-}",
+                        "pid": "${PID:-}",
+                        "thread": "%thread",
+                        "class": "%logger{40}",
+                        "rest": "%message"
+                        }
+                    </pattern>
+                </pattern>
+            </providers>
+        </encoder>
+    </appender>
+
+    <logger name="org.springframework" level="INFO"/>
+    <logger name="com.usoftchina.saas" level="INFO"/>
+
+    <springProfile name="dev">
+        <root level="INFO">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="test">
+        <root level="INFO">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+            <appender-ref ref="ROOT_APPENDER"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="docker">
+        <logger name="org.springframework" level="WARN"/>
+        <root level="DEBUG">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+            <appender-ref ref="JSON_APPENDER"/>
+        </root>
+    </springProfile>
 
 </configuration>

+ 4 - 0
base-servers/admin-server/pom.xml

@@ -33,6 +33,10 @@
             <groupId>org.jolokia</groupId>
             <artifactId>jolokia-core</artifactId>
         </dependency>
+        <dependency>
+            <groupId>net.logstash.logback</groupId>
+            <artifactId>logstash-logback-encoder</artifactId>
+        </dependency>
     </dependencies>
     <build>
         <plugins>

+ 2 - 0
base-servers/admin-server/src/main/resources/application.yml

@@ -1,4 +1,6 @@
 spring:
+  profiles:
+    active: dev
   application:
     name: admin-server
   security:

+ 51 - 9
base-servers/admin-server/src/main/resources/logback-spring.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
-    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
+    <include resource="org/springframework/boot/logging/logback/base.xml" />
     <jmxConfigurator/>
 
     <!--
@@ -28,10 +28,10 @@
     <springProperty scope="context" name="spring.profiles.active" source="spring.profiles.active" defaultValue="dev"/>
     <springProperty scope="context" name="common-pattern" source="logging.common-pattern" defaultValue="%d{yyyy-MM-dd HH:mm:ss.SSS}:[%5p] [%t:%r] [%C{1}:%M:%L] --> %m%n"/>
     <springProperty scope="context" name="log.level.console" source="logging.level.console" defaultValue="INFO"/>
+    <springProperty scope="context" name="log.destination" source="logging.destination" defaultValue="192.168.253.3:5000"/>
 
     <contextName>${spring.application.name}-${spring.profiles.active}-logback</contextName>
 
-
     <appender name="CONSOLE_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>${log.level.console}</level>
@@ -44,11 +44,9 @@
     <appender name="ROOT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${log.path}/root.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <!-- 每天一归档 -->
             <fileNamePattern>${log.path}/%d{yyyy-MM}/root-%d{yyyy-MM-dd}-%i.log.gz</fileNamePattern>
-            <!-- 单个日志文件最多 100MB, 60天的日志周期,最大不能超过20GB -->
             <maxFileSize>128MB</maxFileSize>
-            <maxHistory>60</maxHistory>
+            <maxHistory>7</maxHistory>
             <totalSizeCap>20GB</totalSizeCap>
         </rollingPolicy>
         <encoder>
@@ -56,9 +54,53 @@
         </encoder>
     </appender>
 
-    <root level="${log.level.console}">
-        <appender-ref ref="CONSOLE_APPENDER"/>
-        <appender-ref ref="ROOT_APPENDER"/>
-    </root>
+    <!-- Appender to log in a JSON format -->
+    <appender name="JSON_APPENDER" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
+        <destination>${log.destination}</destination>
+        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
+            <providers>
+                <pattern>
+                    <pattern>
+                        {
+                        "severity": "%level",
+                        "service": "${spring.application.name:-}",
+                        "trace": "%X{X-B3-TraceId:-}",
+                        "span": "%X{X-B3-SpanId:-}",
+                        "parent": "%X{X-B3-ParentSpanId:-}",
+                        "exportable": "%X{X-Span-Export:-}",
+                        "pid": "${PID:-}",
+                        "thread": "%thread",
+                        "class": "%logger{40}",
+                        "rest": "%message"
+                        }
+                    </pattern>
+                </pattern>
+            </providers>
+        </encoder>
+    </appender>
+
+    <logger name="org.springframework" level="INFO"/>
+    <logger name="com.usoftchina.saas" level="INFO"/>
+
+    <springProfile name="dev">
+        <root level="INFO">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="test">
+        <root level="INFO">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+            <appender-ref ref="ROOT_APPENDER"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="docker">
+        <logger name="org.springframework" level="WARN"/>
+        <root level="DEBUG">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+            <appender-ref ref="JSON_APPENDER"/>
+        </root>
+    </springProfile>
 
 </configuration>

+ 5 - 0
base-servers/auth/auth-server/pom.xml

@@ -47,6 +47,11 @@
             <groupId>io.springfox</groupId>
             <artifactId>springfox-swagger2</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>net.logstash.logback</groupId>
+            <artifactId>logstash-logback-encoder</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 2 - 0
base-servers/auth/auth-server/src/main/resources/application.yml

@@ -1,4 +1,6 @@
 spring:
+  profiles:
+    active: dev
   application:
     name: auth-server
   security:

+ 51 - 9
base-servers/auth/auth-server/src/main/resources/logback-spring.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
-    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
+    <include resource="org/springframework/boot/logging/logback/base.xml" />
     <jmxConfigurator/>
 
     <!--
@@ -28,10 +28,10 @@
     <springProperty scope="context" name="spring.profiles.active" source="spring.profiles.active" defaultValue="dev"/>
     <springProperty scope="context" name="common-pattern" source="logging.common-pattern" defaultValue="%d{yyyy-MM-dd HH:mm:ss.SSS}:[%5p] [%t:%r] [%C{1}:%M:%L] --> %m%n"/>
     <springProperty scope="context" name="log.level.console" source="logging.level.console" defaultValue="INFO"/>
+    <springProperty scope="context" name="log.destination" source="logging.destination" defaultValue="192.168.253.3:5000"/>
 
     <contextName>${spring.application.name}-${spring.profiles.active}-logback</contextName>
 
-
     <appender name="CONSOLE_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>${log.level.console}</level>
@@ -44,11 +44,9 @@
     <appender name="ROOT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${log.path}/root.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <!-- 每天一归档 -->
             <fileNamePattern>${log.path}/%d{yyyy-MM}/root-%d{yyyy-MM-dd}-%i.log.gz</fileNamePattern>
-            <!-- 单个日志文件最多 100MB, 60天的日志周期,最大不能超过20GB -->
             <maxFileSize>128MB</maxFileSize>
-            <maxHistory>60</maxHistory>
+            <maxHistory>7</maxHistory>
             <totalSizeCap>20GB</totalSizeCap>
         </rollingPolicy>
         <encoder>
@@ -56,9 +54,53 @@
         </encoder>
     </appender>
 
-    <root level="${log.level.console}">
-        <appender-ref ref="CONSOLE_APPENDER"/>
-        <appender-ref ref="ROOT_APPENDER"/>
-    </root>
+    <!-- Appender to log in a JSON format -->
+    <appender name="JSON_APPENDER" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
+        <destination>${log.destination}</destination>
+        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
+            <providers>
+                <pattern>
+                    <pattern>
+                        {
+                        "severity": "%level",
+                        "service": "${spring.application.name:-}",
+                        "trace": "%X{X-B3-TraceId:-}",
+                        "span": "%X{X-B3-SpanId:-}",
+                        "parent": "%X{X-B3-ParentSpanId:-}",
+                        "exportable": "%X{X-Span-Export:-}",
+                        "pid": "${PID:-}",
+                        "thread": "%thread",
+                        "class": "%logger{40}",
+                        "rest": "%message"
+                        }
+                    </pattern>
+                </pattern>
+            </providers>
+        </encoder>
+    </appender>
+
+    <logger name="org.springframework" level="INFO"/>
+    <logger name="com.usoftchina.saas" level="INFO"/>
+
+    <springProfile name="dev">
+        <root level="INFO">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="test">
+        <root level="INFO">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+            <appender-ref ref="ROOT_APPENDER"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="docker">
+        <logger name="org.springframework" level="WARN"/>
+        <root level="DEBUG">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+            <appender-ref ref="JSON_APPENDER"/>
+        </root>
+    </springProfile>
 
 </configuration>

+ 4 - 0
base-servers/eureka-server/pom.xml

@@ -25,6 +25,10 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
+        <dependency>
+            <groupId>net.logstash.logback</groupId>
+            <artifactId>logstash-logback-encoder</artifactId>
+        </dependency>
     </dependencies>
     <build>
         <plugins>

+ 51 - 9
base-servers/eureka-server/src/main/resources/logback-spring.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
-    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
+    <include resource="org/springframework/boot/logging/logback/base.xml" />
     <jmxConfigurator/>
 
     <!--
@@ -28,10 +28,10 @@
     <springProperty scope="context" name="spring.profiles.active" source="spring.profiles.active" defaultValue="dev"/>
     <springProperty scope="context" name="common-pattern" source="logging.common-pattern" defaultValue="%d{yyyy-MM-dd HH:mm:ss.SSS}:[%5p] [%t:%r] [%C{1}:%M:%L] --> %m%n"/>
     <springProperty scope="context" name="log.level.console" source="logging.level.console" defaultValue="INFO"/>
+    <springProperty scope="context" name="log.destination" source="logging.destination" defaultValue="192.168.253.3:5000"/>
 
     <contextName>${spring.application.name}-${spring.profiles.active}-logback</contextName>
 
-
     <appender name="CONSOLE_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>${log.level.console}</level>
@@ -44,11 +44,9 @@
     <appender name="ROOT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${log.path}/root.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <!-- 每天一归档 -->
             <fileNamePattern>${log.path}/%d{yyyy-MM}/root-%d{yyyy-MM-dd}-%i.log.gz</fileNamePattern>
-            <!-- 单个日志文件最多 100MB, 60天的日志周期,最大不能超过20GB -->
             <maxFileSize>128MB</maxFileSize>
-            <maxHistory>60</maxHistory>
+            <maxHistory>7</maxHistory>
             <totalSizeCap>20GB</totalSizeCap>
         </rollingPolicy>
         <encoder>
@@ -56,9 +54,53 @@
         </encoder>
     </appender>
 
-    <root level="${log.level.console}">
-        <appender-ref ref="CONSOLE_APPENDER"/>
-        <appender-ref ref="ROOT_APPENDER"/>
-    </root>
+    <!-- Appender to log in a JSON format -->
+    <appender name="JSON_APPENDER" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
+        <destination>${log.destination}</destination>
+        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
+            <providers>
+                <pattern>
+                    <pattern>
+                        {
+                        "severity": "%level",
+                        "service": "${spring.application.name:-}",
+                        "trace": "%X{X-B3-TraceId:-}",
+                        "span": "%X{X-B3-SpanId:-}",
+                        "parent": "%X{X-B3-ParentSpanId:-}",
+                        "exportable": "%X{X-Span-Export:-}",
+                        "pid": "${PID:-}",
+                        "thread": "%thread",
+                        "class": "%logger{40}",
+                        "rest": "%message"
+                        }
+                    </pattern>
+                </pattern>
+            </providers>
+        </encoder>
+    </appender>
+
+    <logger name="org.springframework" level="INFO"/>
+    <logger name="com.usoftchina.saas" level="INFO"/>
+
+    <springProfile name="dev">
+        <root level="INFO">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="test">
+        <root level="INFO">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+            <appender-ref ref="ROOT_APPENDER"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="docker">
+        <logger name="org.springframework" level="WARN"/>
+        <root level="DEBUG">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+            <appender-ref ref="JSON_APPENDER"/>
+        </root>
+    </springProfile>
 
 </configuration>

+ 4 - 0
base-servers/gateway-server/pom.xml

@@ -55,6 +55,10 @@
             <groupId>org.springframework.amqp</groupId>
             <artifactId>spring-rabbit</artifactId>
         </dependency>
+        <dependency>
+            <groupId>net.logstash.logback</groupId>
+            <artifactId>logstash-logback-encoder</artifactId>
+        </dependency>
         <!-- auth -->
         <dependency>
             <groupId>com.usoftchina.saas</groupId>

+ 5 - 2
base-servers/gateway-server/src/main/resources/application.yml

@@ -1,4 +1,6 @@
 spring:
+  profiles:
+    active: dev
   application:
     name: gateway-server
   servlet:
@@ -12,8 +14,9 @@ spring:
   rabbitmq:
     host: 192.168.0.176
     port: 5672
-    password: guest
-    username: guest
+    virtual-host: dev
+    username: saas
+    password: select123***
   zipkin:
     sender:
       type: rabbit

+ 4 - 1
base-servers/gateway-server/src/main/resources/config/application-docker.yml

@@ -4,4 +4,7 @@ eureka:
     prefer-ip-address: false
   client:
     serviceUrl:
-      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@saas-eureka-server:8500/eureka/
+      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@saas-eureka-server:8500/eureka/
+spring:
+  rabbitmq:
+    virtual-host: docker

+ 51 - 9
base-servers/gateway-server/src/main/resources/logback-spring.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
-    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
+    <include resource="org/springframework/boot/logging/logback/base.xml" />
     <jmxConfigurator/>
 
     <!--
@@ -28,10 +28,10 @@
     <springProperty scope="context" name="spring.profiles.active" source="spring.profiles.active" defaultValue="dev"/>
     <springProperty scope="context" name="common-pattern" source="logging.common-pattern" defaultValue="%d{yyyy-MM-dd HH:mm:ss.SSS}:[%5p] [%t:%r] [%C{1}:%M:%L] --> %m%n"/>
     <springProperty scope="context" name="log.level.console" source="logging.level.console" defaultValue="INFO"/>
+    <springProperty scope="context" name="log.destination" source="logging.destination" defaultValue="192.168.253.3:5000"/>
 
     <contextName>${spring.application.name}-${spring.profiles.active}-logback</contextName>
 
-
     <appender name="CONSOLE_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>${log.level.console}</level>
@@ -44,11 +44,9 @@
     <appender name="ROOT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${log.path}/root.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <!-- 每天一归档 -->
             <fileNamePattern>${log.path}/%d{yyyy-MM}/root-%d{yyyy-MM-dd}-%i.log.gz</fileNamePattern>
-            <!-- 单个日志文件最多 100MB, 60天的日志周期,最大不能超过20GB -->
             <maxFileSize>128MB</maxFileSize>
-            <maxHistory>60</maxHistory>
+            <maxHistory>7</maxHistory>
             <totalSizeCap>20GB</totalSizeCap>
         </rollingPolicy>
         <encoder>
@@ -56,9 +54,53 @@
         </encoder>
     </appender>
 
-    <root level="${log.level.console}">
-        <appender-ref ref="CONSOLE_APPENDER"/>
-        <appender-ref ref="ROOT_APPENDER"/>
-    </root>
+    <!-- Appender to log in a JSON format -->
+    <appender name="JSON_APPENDER" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
+        <destination>${log.destination}</destination>
+        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
+            <providers>
+                <pattern>
+                    <pattern>
+                        {
+                        "severity": "%level",
+                        "service": "${spring.application.name:-}",
+                        "trace": "%X{X-B3-TraceId:-}",
+                        "span": "%X{X-B3-SpanId:-}",
+                        "parent": "%X{X-B3-ParentSpanId:-}",
+                        "exportable": "%X{X-Span-Export:-}",
+                        "pid": "${PID:-}",
+                        "thread": "%thread",
+                        "class": "%logger{40}",
+                        "rest": "%message"
+                        }
+                    </pattern>
+                </pattern>
+            </providers>
+        </encoder>
+    </appender>
+
+    <logger name="org.springframework" level="INFO"/>
+    <logger name="com.usoftchina.saas" level="INFO"/>
+
+    <springProfile name="dev">
+        <root level="INFO">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="test">
+        <root level="INFO">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+            <appender-ref ref="ROOT_APPENDER"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="docker">
+        <logger name="org.springframework" level="WARN"/>
+        <root level="DEBUG">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+            <appender-ref ref="JSON_APPENDER"/>
+        </root>
+    </springProfile>
 
 </configuration>

+ 4 - 0
base-servers/ui-server/pom.xml

@@ -35,6 +35,10 @@
             <groupId>org.springframework.amqp</groupId>
             <artifactId>spring-rabbit</artifactId>
         </dependency>
+        <dependency>
+            <groupId>net.logstash.logback</groupId>
+            <artifactId>logstash-logback-encoder</artifactId>
+        </dependency>
         <!-- test -->
         <dependency>
             <groupId>org.springframework.boot</groupId>

+ 5 - 0
base-servers/ui-server/src/main/java/com/usoftchina/saas/ui/controller/co/CoViewController.java

@@ -4,6 +4,8 @@ import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.ui.service.ViewService;
 import com.usoftchina.saas.ui.service.co.CoViewService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -20,6 +22,8 @@ public class CoViewController {
     @Autowired
     private ViewService viewService;
 
+    private Logger logger = LoggerFactory.getLogger(CoViewController.class);
+
     /**
      * 获取企业视图配置
      *
@@ -36,6 +40,7 @@ public class CoViewController {
             coViewService.cacheEvict(name);
             viewService.cacheEvict(name);
         }
+        logger.warn("just for test");
         // TODO 开发默认设置,及时去掉
         if (null == BaseContextHolder.getCompanyId()) {
             BaseContextHolder.setCompanyId(0);

+ 5 - 2
base-servers/ui-server/src/main/resources/application.yml

@@ -1,4 +1,6 @@
 spring:
+  profiles:
+    active: dev
   application:
     name: ui-server
   security:
@@ -8,8 +10,9 @@ spring:
   rabbitmq:
     host: 192.168.0.176
     port: 5672
-    password: guest
-    username: guest
+    virtual-host: dev
+    username: saas
+    password: select123***
   zipkin:
     sender:
       type: rabbit

+ 4 - 1
base-servers/ui-server/src/main/resources/config/application-docker.yml

@@ -4,4 +4,7 @@ eureka:
     prefer-ip-address: false
   client:
     serviceUrl:
-      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@saas-eureka-server:8500/eureka/
+      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@saas-eureka-server:8500/eureka/
+spring:
+  rabbitmq:
+    virtual-host: docker

+ 51 - 9
base-servers/ui-server/src/main/resources/logback-spring.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
-    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
+    <include resource="org/springframework/boot/logging/logback/base.xml" />
     <jmxConfigurator/>
 
     <!--
@@ -28,10 +28,10 @@
     <springProperty scope="context" name="spring.profiles.active" source="spring.profiles.active" defaultValue="dev"/>
     <springProperty scope="context" name="common-pattern" source="logging.common-pattern" defaultValue="%d{yyyy-MM-dd HH:mm:ss.SSS}:[%5p] [%t:%r] [%C{1}:%M:%L] --> %m%n"/>
     <springProperty scope="context" name="log.level.console" source="logging.level.console" defaultValue="INFO"/>
+    <springProperty scope="context" name="log.destination" source="logging.destination" defaultValue="192.168.253.3:5000"/>
 
     <contextName>${spring.application.name}-${spring.profiles.active}-logback</contextName>
 
-
     <appender name="CONSOLE_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>${log.level.console}</level>
@@ -44,11 +44,9 @@
     <appender name="ROOT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${log.path}/root.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <!-- 每天一归档 -->
             <fileNamePattern>${log.path}/%d{yyyy-MM}/root-%d{yyyy-MM-dd}-%i.log.gz</fileNamePattern>
-            <!-- 单个日志文件最多 100MB, 60天的日志周期,最大不能超过20GB -->
             <maxFileSize>128MB</maxFileSize>
-            <maxHistory>60</maxHistory>
+            <maxHistory>7</maxHistory>
             <totalSizeCap>20GB</totalSizeCap>
         </rollingPolicy>
         <encoder>
@@ -56,9 +54,53 @@
         </encoder>
     </appender>
 
-    <root level="${log.level.console}">
-        <appender-ref ref="CONSOLE_APPENDER"/>
-        <appender-ref ref="ROOT_APPENDER"/>
-    </root>
+    <!-- Appender to log in a JSON format -->
+    <appender name="JSON_APPENDER" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
+        <destination>${log.destination}</destination>
+        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
+            <providers>
+                <pattern>
+                    <pattern>
+                        {
+                        "severity": "%level",
+                        "service": "${spring.application.name:-}",
+                        "trace": "%X{X-B3-TraceId:-}",
+                        "span": "%X{X-B3-SpanId:-}",
+                        "parent": "%X{X-B3-ParentSpanId:-}",
+                        "exportable": "%X{X-Span-Export:-}",
+                        "pid": "${PID:-}",
+                        "thread": "%thread",
+                        "class": "%logger{40}",
+                        "rest": "%message"
+                        }
+                    </pattern>
+                </pattern>
+            </providers>
+        </encoder>
+    </appender>
+
+    <logger name="org.springframework" level="INFO"/>
+    <logger name="com.usoftchina.saas" level="INFO"/>
+
+    <springProfile name="dev">
+        <root level="INFO">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="test">
+        <root level="INFO">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+            <appender-ref ref="ROOT_APPENDER"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="docker">
+        <logger name="org.springframework" level="WARN"/>
+        <root level="DEBUG">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+            <appender-ref ref="JSON_APPENDER"/>
+        </root>
+    </springProfile>
 
 </configuration>

+ 4 - 4
base-servers/zipkin-server/pom.xml

@@ -44,12 +44,12 @@
         </dependency>
         <dependency>
             <groupId>io.zipkin.java</groupId>
-            <artifactId>zipkin-autoconfigure-storage-mysql</artifactId>
+            <artifactId>zipkin-autoconfigure-storage-elasticsearch</artifactId>
         </dependency>
+
         <dependency>
-            <groupId>org.jooq</groupId>
-            <artifactId>jooq</artifactId>
-            <version>3.11.4</version>
+            <groupId>net.logstash.logback</groupId>
+            <artifactId>logstash-logback-encoder</artifactId>
         </dependency>
     </dependencies>
     <build>

+ 7 - 3
base-servers/zipkin-server/src/main/java/com/usoftchina/saas/zipkin/ZipkinApplication.java

@@ -2,7 +2,7 @@ package com.usoftchina.saas.zipkin;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-//import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
+import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
 import zipkin2.server.internal.EnableZipkinServer;
 
 /**
@@ -11,9 +11,13 @@ import zipkin2.server.internal.EnableZipkinServer;
  */
 @EnableZipkinServer
 @SpringBootApplication
-//@EnableEurekaClient
+@EnableEurekaClient
 public class ZipkinApplication {
     public static void main(String[] args) {
-        SpringApplication.run(ZipkinApplication.class, args);
+        try {
+            SpringApplication.run(ZipkinApplication.class, args);
+        } catch (Throwable e) {
+            e.printStackTrace();
+        }
     }
 }

+ 20 - 9
base-servers/zipkin-server/src/main/resources/application.yml

@@ -1,4 +1,6 @@
 spring:
+  profiles:
+    active: dev
   application:
     name: zipkin-server
   security:
@@ -30,19 +32,28 @@ info:
   spring-cloud-version: '@spring.cloud.version@'
 zipkin:
   collector:
+    sample-rate: 1.0
+    http:
+      enabled: false
     rabbitmq:
-      addresses: 192.168.0.176:5672
-      username: guest
-      password: guest
+      uri: amqp://saas:select123***@192.168.0.176:5672/dev
       queue: zipkin
   storage:
-    type: mysql
-    mysql:
-      host: 192.168.253.12
-      username: root
-      password: select111***
-      db: saas_zipkin
+    type: elasticsearch
+    elasticsearch:
+      hosts: 192.168.253.3:9200
+      index: zipkin
+      index-shards: 5
+      index-replicas: 1
+      max-requests: 64
 management:
+  endpoints:
+    web:
+      exposure:
+        include: '*'
+  endpoint:
+    health:
+      show-details: always
   metrics:
     web:
       server:

+ 8 - 1
base-servers/zipkin-server/src/main/resources/config/application-docker.yml

@@ -1,4 +1,11 @@
 eureka:
+  instance:
+    hostname: saas-zipkin-server
+    prefer-ip-address: false
   client:
     serviceUrl:
-      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@saas-eureka-server:8500/eureka/
+      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@saas-eureka-server:8500/eureka/
+zipkin:
+  collector:
+    rabbitmq:
+      uri: amqp://saas:select123***@192.168.0.176:5672/docker

+ 51 - 9
base-servers/zipkin-server/src/main/resources/logback-spring.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
-    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
+    <include resource="org/springframework/boot/logging/logback/base.xml" />
     <jmxConfigurator/>
 
     <!--
@@ -28,10 +28,10 @@
     <springProperty scope="context" name="spring.profiles.active" source="spring.profiles.active" defaultValue="dev"/>
     <springProperty scope="context" name="common-pattern" source="logging.common-pattern" defaultValue="%d{yyyy-MM-dd HH:mm:ss.SSS}:[%5p] [%t:%r] [%C{1}:%M:%L] --> %m%n"/>
     <springProperty scope="context" name="log.level.console" source="logging.level.console" defaultValue="INFO"/>
+    <springProperty scope="context" name="log.destination" source="logging.destination" defaultValue="192.168.253.3:5000"/>
 
     <contextName>${spring.application.name}-${spring.profiles.active}-logback</contextName>
 
-
     <appender name="CONSOLE_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>${log.level.console}</level>
@@ -44,11 +44,9 @@
     <appender name="ROOT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${log.path}/root.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <!-- 每天一归档 -->
             <fileNamePattern>${log.path}/%d{yyyy-MM}/root-%d{yyyy-MM-dd}-%i.log.gz</fileNamePattern>
-            <!-- 单个日志文件最多 100MB, 60天的日志周期,最大不能超过20GB -->
             <maxFileSize>128MB</maxFileSize>
-            <maxHistory>60</maxHistory>
+            <maxHistory>7</maxHistory>
             <totalSizeCap>20GB</totalSizeCap>
         </rollingPolicy>
         <encoder>
@@ -56,9 +54,53 @@
         </encoder>
     </appender>
 
-    <root level="${log.level.console}">
-        <appender-ref ref="CONSOLE_APPENDER"/>
-        <appender-ref ref="ROOT_APPENDER"/>
-    </root>
+    <!-- Appender to log in a JSON format -->
+    <appender name="JSON_APPENDER" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
+        <destination>${log.destination}</destination>
+        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
+            <providers>
+                <pattern>
+                    <pattern>
+                        {
+                        "severity": "%level",
+                        "service": "${spring.application.name:-}",
+                        "trace": "%X{X-B3-TraceId:-}",
+                        "span": "%X{X-B3-SpanId:-}",
+                        "parent": "%X{X-B3-ParentSpanId:-}",
+                        "exportable": "%X{X-Span-Export:-}",
+                        "pid": "${PID:-}",
+                        "thread": "%thread",
+                        "class": "%logger{40}",
+                        "rest": "%message"
+                        }
+                    </pattern>
+                </pattern>
+            </providers>
+        </encoder>
+    </appender>
+
+    <logger name="org.springframework" level="INFO"/>
+    <logger name="com.usoftchina.saas" level="INFO"/>
+
+    <springProfile name="dev">
+        <root level="INFO">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="test">
+        <root level="INFO">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+            <appender-ref ref="ROOT_APPENDER"/>
+        </root>
+    </springProfile>
+
+    <springProfile name="docker">
+        <logger name="org.springframework" level="WARN"/>
+        <root level="DEBUG">
+            <appender-ref ref="CONSOLE_APPENDER"/>
+            <appender-ref ref="JSON_APPENDER"/>
+        </root>
+    </springProfile>
 
 </configuration>

+ 12 - 1
pom.xml

@@ -32,6 +32,7 @@
         <fastjson.version>1.2.44</fastjson.version>
         <alibaba.druid.version>1.1.6</alibaba.druid.version>
         <zipkin.version>2.11.1</zipkin.version>
+        <logstash.version>4.11</logstash.version>
         <pagehelper.starter.version>1.2.7</pagehelper.starter.version>
         <shiro.version>1.4.0</shiro.version>
         <swagger.version>2.7.0</swagger.version>
@@ -136,6 +137,11 @@
                 <artifactId>zipkin-autoconfigure-ui</artifactId>
                 <version>${zipkin.version}</version>
             </dependency>
+            <dependency>
+                <groupId>net.logstash.logback</groupId>
+                <artifactId>logstash-logback-encoder</artifactId>
+                <version>${logstash.version}</version>
+            </dependency>
             <!-- pagehelper -->
             <dependency>
                 <groupId>com.github.pagehelper</groupId>
@@ -247,7 +253,12 @@
             </dependency>
             <dependency>
                 <groupId>com.usoftchina.saas</groupId>
-                <artifactId>commons</artifactId>
+                <artifactId>commons-dto</artifactId>
+                <version>${project.release.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.usoftchina.saas</groupId>
+                <artifactId>commons-api</artifactId>
                 <version>${project.release.version}</version>
             </dependency>
             <dependency>

+ 7 - 9
script/docker-base.yaml

@@ -39,15 +39,13 @@ services:
 #      - saas
 
 # Elasticsearch, Logstash, Kibana
-  elk:
-    image: sebp/elk
-    container_name: elk
-    ports:
-      - "5601:5601"
-      - "9200:9200"
-      - "5044:5044"
-    networks:
-      - saas
+# git clone https://github.com/deviantony/docker-elk.git
+# cd docker-elk
+# docker-compose up -d
+# 5000: Logstash TCP input
+# 9200: Elasticsearch HTTP
+# 9300: Elasticsearch TCP transport
+# 5601: Kibana
 
 networks:
   saas: