Commit e0bb0b57 authored by 李成龙's avatar 李成龙

V1.2版本,增加数据权限

parents
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.yeejoin</groupId>
<artifactId>amos</artifactId>
<version>1.1.0-SNAPSHOT</version>
</parent>
<artifactId>bank-server-gateway</artifactId>
<packaging>jar</packaging>
<name>bank-server-gateway</name>
<description>bank-server-gateway</description>
<dependencies>
<!--Eureka 注册中心客户端依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--actuator 依赖(健康检查、审计、统计和监控)-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- zipkin依赖jar-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>-->
<!--&lt;!&ndash; 熔断、降级 &ndash;&gt;
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
&lt;!&ndash; 限流 &ndash;&gt;
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis-reactive</artifactId>
</dependency>-->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</project>
package com.yeejoin.amos;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.ComponentScan;
/**
* Created by magintursh on 2017-05-03.
*/
@ComponentScan({"org.typroject","com.yeejoin.amos"})
@EnableEurekaClient
@SpringBootApplication
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}
\ No newline at end of file
package com.yeejoin.amos.server.gateway.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.web.cors.reactive.CorsUtils;
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebFilter;
import org.springframework.web.server.WebFilterChain;
import reactor.core.publisher.Mono;
import static org.springframework.web.cors.CorsConfiguration.ALL;
@Configuration
public class Cors {
private static final String MAX_AGE = "18000L";
@Bean
public CorsResponseHeaderFilter corsResponseHeaderFilter() {
return new CorsResponseHeaderFilter();
}
@Bean
public WebFilter corsFilter() {
return (ServerWebExchange ctx, WebFilterChain chain) -> {
ServerHttpRequest request = ctx.getRequest();
if (!CorsUtils.isCorsRequest(request)) {
return chain.filter(ctx);
}
HttpHeaders requestHeaders = request.getHeaders();
ServerHttpResponse response = ctx.getResponse();
HttpMethod requestMethod = requestHeaders.getAccessControlRequestMethod();
HttpHeaders headers = response.getHeaders();
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, "*");
headers.addAll(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, requestHeaders.getAccessControlRequestHeaders());
if (requestMethod != null) {
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, requestMethod.name());
}
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, ALL);
headers.add(HttpHeaders.ACCESS_CONTROL_MAX_AGE, MAX_AGE);
if (request.getMethod() == HttpMethod.OPTIONS) {
response.setStatusCode(HttpStatus.OK);
return Mono.empty();
}
return chain.filter(ctx);
};
}
}
package com.yeejoin.amos.server.gateway.config;
import java.util.ArrayList;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.cloud.gateway.filter.NettyWriteResponseFilter;
import org.springframework.core.Ordered;
import org.springframework.http.HttpHeaders;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
public class CorsResponseHeaderFilter implements GlobalFilter, Ordered{
@Override
public int getOrder() {
// 指定此过滤器位于NettyWriteResponseFilter之后
// 即待处理完响应体后接着处理响应头
return NettyWriteResponseFilter.WRITE_RESPONSE_FILTER_ORDER + 1;
}
@Override
@SuppressWarnings("serial")
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
//过滤相同的ACCESS_CONTROL_ALLOW_ORIGIN 和 ACCESS_CONTROL_ALLOW_CREDENTIALS
return chain.filter(exchange).then(Mono.defer(() -> {
exchange.getResponse().getHeaders().entrySet().stream()
.filter(kv -> (kv.getValue() != null && kv.getValue().size() > 1))
.filter(kv -> (kv.getKey().equals(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN)
|| kv.getKey().equals(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS)))
.forEach(kv ->
{
kv.setValue(new ArrayList<String>() {{add(kv.getValue().get(0));}});
});
return chain.filter(exchange);
}));
}
}
package com.yeejoin.amos.server.gateway.config;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
public class CustomeGatewayFilter implements GatewayFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
return null;
}
}
package com.yeejoin.amos.server.gateway.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.factory.StripPrefixGatewayFilterFactory;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class GatewayInfo {
static StripPrefixGatewayFilterFactory stripPrefixGatewayFilterFactory = new StripPrefixGatewayFilterFactory();
static GatewayFilter gatewayFilter;
static {
StripPrefixGatewayFilterFactory.Config config = new StripPrefixGatewayFilterFactory.Config();
config.setParts(1);
gatewayFilter = stripPrefixGatewayFilterFactory.apply(config);
}
@Value("${iot.name}")
private String IOT_ERUKA_NAME;
@Value("${patrol.name}")
private String PATROL_ERUKA_NAME;
@Value("${bank.name}")
private String BANK_ERUKA_NAME;
@Value("${risk.name}")
private String RISK_ERUKA_NAME;
@Value("${duty.name}")
private String DUTY_ERUKA_NAME;
// private static final String IOT_ERUKA_NAME = "AMOSIOT-237";
// private static final String PATROL_ERUKA_NAME = "YEEAMOSPATROL-237";
// private static final String BANK_ERUKA_NAME = "AMOSBANK-XIANA237";
/**
* 跳转oauth服务
*
* @param builder
* @return
*/
@Bean
public RouteLocator myRoutes(RouteLocatorBuilder builder) {
return builder.routes().route(p -> p.path("/privilege/**").uri("lb://AMOS-API-PRIVILEGE"))
.route(p -> p.path("/systemctl/**").uri("lb://AMOS-API-SYSTEMCTL"))
.route(p -> p.path("/urule/**").uri("lb://AMOS-API-RULE"))
// 注:前缀确定不重复得可以用/** 重复得用精确匹配, 完全重复得修改一个
// 银行业务
.route(p -> p.path("/bank/alarm/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/bank/dynamicRingData/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/bank/equipment/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/bank/inspection/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/bank/duty/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/bank/phonebook/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/bank/topography/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/bank/warn/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/bank/test").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/alarm/alarmPage").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/alarm/mobile/getcountxd").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/message/page").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/message/mobile/getcountxd").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/excel/export").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/protal/data").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/protal/hiddentrouble").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/protal/riskFactor").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/rule/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/spcAftermath/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/spcCamera/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/spcControlMeasure/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/spcEuipmentFacilities/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/spcMajorHazardInstallation/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/spcMeasureContent/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/region/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/spcRiskFactor/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/riskList/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/spcRiskSource/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/spcSecurity/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/statistics/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/spcTaskwork/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/api/timeline/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/view3d/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/video/**").uri("lb://" + BANK_ERUKA_NAME))
.route(p -> p.path("/rtsp/**").uri("lb://" + BANK_ERUKA_NAME))
// 巡检业务
.route(p -> p.path("/api/catalogTree/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/check/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/config/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/excel/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/group/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/home/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/inputItem/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/latent/danger/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/msgSubscribe/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/patrol/addRoute").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/plan/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/planTask/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/point/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/stats/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/riskJudgment/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/route/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/safe/save/curCompany").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/spc/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/syn/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/task/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/task/report/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/taskwork/**").uri("lb://" + PATROL_ERUKA_NAME))
.route(p -> p.path("/api/user/**").uri("lb://" + PATROL_ERUKA_NAME))
// IOT
.route(p -> p.path("/alarm/**").uri("lb://" + IOT_ERUKA_NAME))
.route(p -> p.path("/company/**").uri("lb://" + IOT_ERUKA_NAME))
.route(p -> p.path("/device/**").uri("lb://" + IOT_ERUKA_NAME))
.route(p -> p.path("/metricdata/**").uri("lb://" + IOT_ERUKA_NAME))
.route(p -> p.path("/iot/**").uri("lb://" + IOT_ERUKA_NAME))
.route(p -> p.path("/history/**").uri("lb://" + IOT_ERUKA_NAME))
.route(p -> p.path("/intfc/**").uri("lb://" + IOT_ERUKA_NAME))
.route(p -> p.path("/protocol/**").uri("lb://" + IOT_ERUKA_NAME))
.route(p -> p.path("/reportdata/**").uri("lb://" + IOT_ERUKA_NAME))
.route(p -> p.path("/ruledeploy/**").uri("lb://" + IOT_ERUKA_NAME))
.route(p -> p.path("/rulemanage/**").uri("lb://" + IOT_ERUKA_NAME))
.route(p -> p.path("/section/**").uri("lb://" + IOT_ERUKA_NAME))
.route(p -> p.path("/dic/**").uri("lb://" + IOT_ERUKA_NAME))
.route(p -> p.path("/topo/**").uri("lb://" + IOT_ERUKA_NAME))
.route(p -> p.path("/images/**").uri("lb://" + IOT_ERUKA_NAME))
//风险
.route(p -> p.path("/api/spcIdentificationMethod/**").uri("lb://" + RISK_ERUKA_NAME))
.route(p -> p.path("/api/spcEvaluateModel/**").uri("lb://" + RISK_ERUKA_NAME))
.route(p -> p.path("/api/spcRiskLevel/**").uri("lb://" + RISK_ERUKA_NAME))
.route(p -> p.path("/api/spcEvaluateNorm/**").uri("lb://" + RISK_ERUKA_NAME))
.route(p -> p.path("/api/spcHazardSourceClassify/**").uri("lb://" + RISK_ERUKA_NAME))
.route(p -> p.path("/api/riskLevel/**").uri("lb://" + RISK_ERUKA_NAME))
.route(p -> p.path("/api/risksource/**").uri("lb://" + RISK_ERUKA_NAME))
.route(p -> p.path("/api/riskModel/**").uri("lb://" + RISK_ERUKA_NAME))
.route(p -> p.path("/api/riskFactor/**").uri("lb://" + RISK_ERUKA_NAME))
.route(p -> p.path("/api/impEquip/**").uri("lb://" + RISK_ERUKA_NAME))
.route(p -> p.path("/api/common/deptment/**").uri("lb://" + RISK_ERUKA_NAME))
.route(p -> p.path("/api/common/pointList/**").uri("lb://" + RISK_ERUKA_NAME))
.route(p -> p.path("/api/common/pointInputlist/**").uri("lb://" + RISK_ERUKA_NAME))
.route(p -> p.path("/api/common/user/**").uri("lb://" + RISK_ERUKA_NAME))
.route(p -> p.path("/api/fmeaEvaluate/**").uri("lb://" + RISK_ERUKA_NAME))
// 值班
.route(p -> p.path("/duty/**").uri("lb://" + DUTY_ERUKA_NAME))
//匹配余下所有
.route(p -> p.path("/api/common/**").uri("lb://" + PATROL_ERUKA_NAME))
.build();
}
}
package com.yeejoin.amos.server.gateway.face.model;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 过滤器模型
* zhuyu 2019-01-17
*/
public class GatewayFilterDefinition {
//Filter Name
private String name;
//对应的路由规则
private Map<String, String> args = new LinkedHashMap<>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Map<String, String> getArgs() {
return args;
}
public void setArgs(Map<String, String> args) {
this.args = args;
}
}
package com.yeejoin.amos.server.gateway.face.model;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 路由断言模型
* zhuyu 2019-01-17
*/
public class GatewayPredicateDefinition {
//断言对应的Name
private String name;
//配置的断言规则
private Map<String, String> args = new LinkedHashMap<>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Map<String, String> getArgs() {
return args;
}
public void setArgs(Map<String, String> args) {
this.args = args;
}
}
package com.yeejoin.amos.server.gateway.face.model;
import java.util.ArrayList;
import java.util.List;
/**
* 路由模型
* zhuyu 2019-01-17
*/
public class GatewayRouteDefinition {
//路由的Id
private String id;
//路由断言集合配置
private List<GatewayPredicateDefinition> predicates = new ArrayList<>();
//路由过滤器集合配置
private List<GatewayFilterDefinition> filters = new ArrayList<>();
//路由规则转发的目标uri
private String uri;
//路由执行的顺序
private int order = 0;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public List<GatewayPredicateDefinition> getPredicates() {
return predicates;
}
public void setPredicates(List<GatewayPredicateDefinition> predicates) {
this.predicates = predicates;
}
public List<GatewayFilterDefinition> getFilters() {
return filters;
}
public void setFilters(List<GatewayFilterDefinition> filters) {
this.filters = filters;
}
public String getUri() {
return uri;
}
public void setUri(String uri) {
this.uri = uri;
}
public int getOrder() {
return order;
}
public void setOrder(int order) {
this.order = order;
}
}
package com.yeejoin.amos.server.gateway.face.service;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
/**
* 默认降级处理
*/
@RestController
public class DefaultHystrixController {
@RequestMapping("/defaultfallback")
public Map<String,String> defaultfallback(){
System.out.println("降级操作...");
Map<String,String> map = new HashMap<>();
map.put("resultCode","fail");
map.put("resultMessage","服务异常");
map.put("resultObj","null");
return map;
}
}
package com.yeejoin.amos.server.gateway.face.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.event.RefreshRoutesEvent;
import org.springframework.cloud.gateway.route.RouteDefinition;
import org.springframework.cloud.gateway.route.RouteDefinitionWriter;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Mono;
/**
* 动态路由服务
*/
@Service
public class DynamicRouteServiceImpl implements ApplicationEventPublisherAware{
@Autowired
private RouteDefinitionWriter routeDefinitionWriter;
private ApplicationEventPublisher publisher;
@Override
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
this.publisher = applicationEventPublisher;
}
//增加路由
public String add(RouteDefinition definition) {
routeDefinitionWriter.save(Mono.just(definition)).subscribe();
this.publisher.publishEvent(new RefreshRoutesEvent(this));
return "success";
}
// //更新路由
// public String update(RouteDefinition definition) {
// try {
// delete(definition.getId());
// } catch (Exception e) {
// return "update fail,not find route routeId: "+definition.getId();
// }
// try {
// routeDefinitionWriter.save(Mono.just(definition)).subscribe();
// this.publisher.publishEvent(new RefreshRoutesEvent(this));
// return "success";
// } catch (Exception e) {
// return "update route fail";
// }
// }
// //删除路由
// public Mono<ResponseEntity<Object>> delete(String id) {
// return this.routeDefinitionWriter.delete(Mono.just(id)).then(Mono.defer(() -> {
// return Mono.just(ResponseEntity.ok().build());
// })).onErrorResume((t) -> {
// return t instanceof NotFoundException;
// }, (t) -> {
// return Mono.just(ResponseEntity.notFound().build());
// });
// }
}
package com.yeejoin.amos.server.gateway.face.service;
import org.springframework.cloud.gateway.filter.ratelimit.KeyResolver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import reactor.core.publisher.Mono;
/**
* 路由限流配置
* @author zhuyu
* @date 2019/1/15
*/
@Configuration
public class RateLimiterConfig {
@Bean(value = "remoteAddrKeyResolver")
public KeyResolver remoteAddrKeyResolver() {
return exchange -> Mono.just(exchange.getRequest().getRemoteAddress().getAddress().getHostAddress());
}
}
\ No newline at end of file
# REDIS (RedisProperties)
spring.redis.database=0
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=1234560
spring.redis.timeout=0
##\u00e6\u009c\u008d\u00e5\u008a\u00a1\u00e6\u00b3\u00a8\u00e5\u0086\u008c
eureka.client.serviceUrl.defaultZone = http://172.16.10.72:10001/eureka/
eureka.instance.prefer-ip-address=true
management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=*
#eureka.instance.health-check-url=http://localhost:${server.port}${server.servlet.context-path}/actuator/health
eureka.instance.metadata-map.management.context-path=/actuator
#eureka.instance.status-page-url=http://localhost:${server.port}${server.servlet.context-path}/actuator/info
eureka.instance.preferIpAddress=true
eureka.instance.health-check-url=http://${spring.cloud.client.ipAddress}.${server.port}${server.context-path}/health
eureka.instance.status-page-url=http://${spring.cloud.client.ipAddress}.${server.port}${server.context-path}/info
eureka.instance.metadataMap.management.context-path=${server.context-path}
#eureka\u00e4\u00b8\u008a\u00e6\u00b3\u00a8\u00e5\u0086\u008c\u00e7\u009a\u0084\u00e6\u009c\u008d\u00e5\u008a\u00a1\u00e5\u0090\u008d
iot.name=AMOSIOT-237
patrol.name=YEEAMOSPATROL-237
bank.name=AMOSBANK-XIANA237
risk.name=YeeAmosRiskMode-237
duty.name=AmosDutyMode-237
\ No newline at end of file
##服务注册
eureka.client.service-url.defaultZone =http://amos-eurka:10001/eureka/
eureka.instance.prefer-ip-address=true
management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=*
eureka.instance.health-check-url=http://amos-gateway:${server.port}/actuator/health
eureka.instance.metadata-map.management.context-path=/actuator
eureka.instance.status-page-url=http://amos-gateway:${server.port}/actuator/info
#服务跟踪
spring.zipkin.base-url=http://amos-tracking:10002
spring.zipkin.service.name=${spring.application.name}
spring.sleuth.sampler.probability=1.0
##服务注册
eureka.client.service-url.defaultZone =http://localhost:10001/eureka/
eureka.instance.prefer-ip-address=true
management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=*
eureka.instance.health-check-url=http://localhost:${server.port}/actuator/health
eureka.instance.metadata-map.management.context-path=/actuator
eureka.instance.status-page-url=http://localhost:${server.port}/actuator/info
#服务跟踪
spring.zipkin.base-url=http://localhost:10002
spring.zipkin.service.name=${spring.application.name}
spring.sleuth.sampler.probability=1.0
server.port=10005
server.http2.enabled=true
spring.profiles.active=dev
#网管配置
spring.application.name=AMOS-BANK-SERVER-GATEWAY
logging.config=classpath:logback-dev.xml
spring.cloud.gateway.discovery.locator.enabled=true
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- show parameters for hibernate sql 专为 Hibernate 定制
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" />
<logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" />
<logger name="org.hibernate.SQL" level="DEBUG" />
<logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />
<logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />
-->
<!--myibatis log configure-->
<logger name="com.apache.ibatis" level="INFO"/>
<logger name="java.sql.Connection" level="INFO"/>
<logger name="java.sql.Statement" level="INFO"/>
<logger name="java.sql.PreparedStatement" level="INFO"/>
<logger name="com.baomidou" level="INFO"/>
<logger name="org.tycloud" level="INFO"/>
<logger name="org.springframework" level="INFO"/>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
<!--日志异步到数据库 -->
<!--<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">-->
<!--&lt;!&ndash;日志异步到数据库 &ndash;&gt;-->
<!--<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">-->
<!--&lt;!&ndash;连接池 &ndash;&gt;-->
<!--<dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">-->
<!--<driverClass>com.mysql.jdbc.Driver</driverClass>-->
<!--<url>jdbc:mysql://127.0.0.1:3306/databaseName</url>-->
<!--<user>root</user>-->
<!--<password>root</password>-->
<!--</dataSource>-->
<!--</connectionSource>-->
<!--</appender>-->
</configuration>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="/opt/amos/log" />
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/gateway.log.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>30mb</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- show parameters for hibernate sql 专为 Hibernate 定制
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" />
<logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" />
<logger name="org.hibernate.SQL" level="DEBUG" />
<logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />
<logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />
-->
<!--myibatis log configure-->
<logger name="com.apache.ibatis" level="INFO"/>
<logger name="org.mybatis" level="INFO" />
<logger name="java.sql.Connection" level="INFO"/>
<logger name="java.sql.Statement" level="INFO"/>
<logger name="java.sql.PreparedStatement" level="INFO"/>
<logger name="com.baomidou.mybatisplus" level="INFO"/>
<logger name="org.typroject" level="INFO"/>
<logger name="com.yeejoin" level="INFO"/>
<logger name="org.springframework" level="INFO"/>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="FILE" />
</root>
</configuration>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="/opt/log/qa" />
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/gateway.log.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>30mb</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- show parameters for hibernate sql 专为 Hibernate 定制
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" />
<logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" />
<logger name="org.hibernate.SQL" level="DEBUG" />
<logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />
<logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />
-->
<!--myibatis log configure-->
<logger name="com.apache.ibatis" level="INFO"/>
<logger name="org.mybatis" level="INFO" />
<logger name="java.sql.Connection" level="INFO"/>
<logger name="java.sql.Statement" level="INFO"/>
<logger name="java.sql.PreparedStatement" level="INFO"/>
<logger name="com.baomidou.mybatisplus" level="INFO"/>
<logger name="org.typroject" level="INFO"/>
<logger name="com.yeejoin" level="INFO"/>
<logger name="org.springframework" level="INFO"/>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="FILE" />
</root>
</configuration>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment