Merge pull request #309 from wehotel/feature/log_appender
add logback support for send log 2 manager
This commit is contained in:
@@ -57,6 +57,11 @@
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-log4j2</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-classic</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
@@ -145,6 +150,12 @@
|
||||
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-configuration-processor</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-pool2</artifactId>
|
||||
|
||||
@@ -23,13 +23,7 @@ import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
import org.springframework.dao.DataAccessException;
|
||||
import org.springframework.data.redis.connection.ReactiveRedisClusterConnection;
|
||||
import org.springframework.data.redis.connection.ReactiveRedisConnection;
|
||||
import org.springframework.data.redis.connection.ReactiveRedisConnectionFactory;
|
||||
import org.springframework.data.redis.connection.RedisClusterConnection;
|
||||
import org.springframework.data.redis.connection.RedisConnection;
|
||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||
import org.springframework.data.redis.connection.RedisSentinelConnection;
|
||||
import org.springframework.data.redis.connection.*;
|
||||
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
|
||||
import org.springframework.data.redis.core.ReactiveStringRedisTemplate;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
|
||||
104
fizz-core/src/main/java/we/config/LogConfig.java
Normal file
104
fizz-core/src/main/java/we/config/LogConfig.java
Normal file
@@ -0,0 +1,104 @@
|
||||
package we.config;
|
||||
|
||||
import ch.qos.logback.classic.LoggerContext;
|
||||
import ch.qos.logback.classic.PatternLayout;
|
||||
import ch.qos.logback.classic.spi.ILoggingEvent;
|
||||
import ch.qos.logback.core.Appender;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.logging.log4j.core.appender.AbstractAppender;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.context.event.ApplicationReadyEvent;
|
||||
import org.springframework.boot.context.event.ApplicationStartingEvent;
|
||||
import org.springframework.boot.context.event.SpringApplicationEvent;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import we.log.LogProperties;
|
||||
import we.log.LogSendAppenderWithLogback;
|
||||
|
||||
@Configuration
|
||||
public class LogConfig {
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties("fizz.logging")
|
||||
public LogProperties logProperties() {
|
||||
return new LogProperties();
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@ConditionalOnClass(AbstractAppender.class)
|
||||
@AutoConfigureAfter(AggregateRedisConfig.class)
|
||||
public static class CustomLog4j2Config {
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@ConditionalOnClass(LoggerContext.class)
|
||||
@AutoConfigureAfter(AggregateRedisConfig.class)
|
||||
public static class CustomLogbackConfig {
|
||||
@Bean
|
||||
public Object initLogSendAppenderWithLogback(LogProperties logProperties) {
|
||||
return new LoggingConfigurationApplicationListener(logProperties);
|
||||
}
|
||||
}
|
||||
|
||||
public static class LoggingConfigurationApplicationListener {
|
||||
private static final Logger logger = LoggerFactory.getLogger(LoggingConfigurationApplicationListener.class);
|
||||
private static final String APPENDER_NAME = "fizzLogSendAppender";
|
||||
private static final String LAYOUT = "%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %level %logger{36} - %msg%n";
|
||||
private LogProperties logProperties;
|
||||
|
||||
public LoggingConfigurationApplicationListener() {
|
||||
}
|
||||
|
||||
public LoggingConfigurationApplicationListener(LogProperties logProperties) {
|
||||
this.logProperties = logProperties;
|
||||
}
|
||||
|
||||
@EventListener
|
||||
public void contextRefreshed(SpringApplicationEvent event) {
|
||||
onApplicationEvent(event);
|
||||
}
|
||||
|
||||
@EventListener
|
||||
public void applicationStarting(ApplicationStartingEvent event) {
|
||||
onApplicationEvent(event);
|
||||
}
|
||||
|
||||
@EventListener
|
||||
public void applicationReady(ApplicationReadyEvent event) {
|
||||
onApplicationEvent(event);
|
||||
}
|
||||
|
||||
public void onApplicationEvent(ApplicationEvent event) {
|
||||
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
|
||||
final ch.qos.logback.classic.Logger root = context.getLogger(Logger.ROOT_LOGGER_NAME);
|
||||
String layoutConfig = StringUtils.isBlank(logProperties.getLayout()) ? LAYOUT : logProperties.getLayout();
|
||||
|
||||
final LogSendAppenderWithLogback newAppender = new LogSendAppenderWithLogback();
|
||||
newAppender.setName(APPENDER_NAME);
|
||||
newAppender.setContext(context);
|
||||
PatternLayout layout = new PatternLayout();
|
||||
layout.setPattern(layoutConfig);
|
||||
newAppender.setLayout(layout);
|
||||
|
||||
Appender<ILoggingEvent> appender = root.getAppender(APPENDER_NAME);
|
||||
if (appender == null) {
|
||||
newAppender.start();
|
||||
root.addAppender(newAppender);
|
||||
logger.info("Added fizz log send appender:{}", APPENDER_NAME);
|
||||
} else {
|
||||
newAppender.start();
|
||||
root.detachAppender(APPENDER_NAME);
|
||||
root.addAppender(newAppender);
|
||||
logger.info("Refresh fizz log send appender:{}", APPENDER_NAME);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -21,8 +21,6 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.reactive.function.client.WebClient;
|
||||
import reactor.netty.resources.LoopResources;
|
||||
import we.util.JacksonUtils;
|
||||
|
||||
/**
|
||||
* @author hongqiaowei
|
||||
|
||||
8
fizz-core/src/main/java/we/log/LogProperties.java
Normal file
8
fizz-core/src/main/java/we/log/LogProperties.java
Normal file
@@ -0,0 +1,8 @@
|
||||
package we.log;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class LogProperties {
|
||||
private String layout;
|
||||
}
|
||||
@@ -1,133 +1,10 @@
|
||||
/*
|
||||
* Copyright (C) 2020 the original author or authors.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package we.log;
|
||||
|
||||
import org.apache.logging.log4j.core.Appender;
|
||||
import org.apache.logging.log4j.core.Core;
|
||||
import org.apache.logging.log4j.core.Filter;
|
||||
import org.apache.logging.log4j.core.Layout;
|
||||
import org.apache.logging.log4j.core.LogEvent;
|
||||
import org.apache.logging.log4j.core.appender.AbstractAppender;
|
||||
import org.apache.logging.log4j.core.config.Property;
|
||||
import org.apache.logging.log4j.core.config.plugins.Plugin;
|
||||
import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
|
||||
import org.apache.logging.log4j.core.config.plugins.PluginElement;
|
||||
import org.apache.logging.log4j.core.config.plugins.PluginFactory;
|
||||
import org.apache.logging.log4j.core.layout.PatternLayout;
|
||||
import we.FizzAppContext;
|
||||
import we.flume.clients.log4j2appender.LogService;
|
||||
import we.util.NetworkUtils;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
/**
|
||||
* log send appender
|
||||
*
|
||||
* @author zhongjie
|
||||
*/
|
||||
@Plugin(name = LogSendAppender.PLUGIN_NAME, category = Core.CATEGORY_NAME, elementType = Appender.ELEMENT_TYPE, printObject = true)
|
||||
public class LogSendAppender extends AbstractAppender {
|
||||
|
||||
static final String PLUGIN_NAME = "LogSend";
|
||||
public static LogSendService logSendService;
|
||||
public static Boolean logEnabled;
|
||||
private static LogSend[] logSends = new LogSend[1000];
|
||||
private static AtomicInteger logSendIndex = new AtomicInteger(0);
|
||||
|
||||
private LogSendAppender(String name, Filter filter, Layout<? extends Serializable> layout, boolean ignoreExceptions, Property[] properties) {
|
||||
super(name, filter, layout, ignoreExceptions, properties);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void append(LogEvent event) {
|
||||
if (logEnabled != null && !logEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (logEnabled == null && FizzAppContext.appContext == null && logSendService == null) {
|
||||
// local cache
|
||||
logSends[logSendIndex.getAndIncrement() % logSends.length] = new LogSend(this.getBizId(event.getMessage().getParameters()),
|
||||
NetworkUtils.getServerIp(), event.getLevel().intLevel(), event.getTimeMillis(), new String(this.getLayout().toByteArray(event)));
|
||||
return;
|
||||
}
|
||||
|
||||
if (logEnabled == null && logSendService == null) {
|
||||
// no legal logSendService, discard the local cache
|
||||
logEnabled = Boolean.FALSE;
|
||||
logSends = null;
|
||||
return;
|
||||
}
|
||||
|
||||
if (logEnabled == null) {
|
||||
logEnabled = Boolean.TRUE;
|
||||
|
||||
LogSend[] logSends;
|
||||
synchronized (LogSendAppender.class) {
|
||||
logSends = LogSendAppender.logSends;
|
||||
LogSendAppender.logSends = null;
|
||||
}
|
||||
|
||||
// logSendService is ready, send the local cache
|
||||
if (logSends != null) {
|
||||
int size = Math.min(logSendIndex.get(), logSends.length);
|
||||
for (int i = 0; i < size; i++) {
|
||||
logSendService.send(logSends[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LogSend logSend = new LogSend(this.getBizId(event.getMessage().getParameters()), NetworkUtils.getServerIp(),
|
||||
event.getLevel().intLevel(), event.getTimeMillis(), new String(this.getLayout().toByteArray(event)));
|
||||
logSendService.send(logSend);
|
||||
}
|
||||
|
||||
private String getBizId(Object[] parameters) {
|
||||
Object bizId = LogService.getBizId();
|
||||
if (parameters != null) {
|
||||
for (int i = parameters.length - 1; i > -1; --i) {
|
||||
Object p = parameters[i];
|
||||
if (p == LogService.BIZ_ID) {
|
||||
if (i != parameters.length - 1) {
|
||||
bizId = parameters[i + 1];
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (bizId == null) {
|
||||
return "";
|
||||
}
|
||||
return bizId.toString();
|
||||
}
|
||||
|
||||
@PluginFactory
|
||||
public static LogSendAppender createAppender(@PluginAttribute("name") String name,
|
||||
@PluginElement("Filter") final Filter filter,
|
||||
@PluginElement("Layout") Layout<? extends Serializable> layout,
|
||||
@PluginAttribute("ignoreExceptions") boolean ignoreExceptions) {
|
||||
if (name == null) {
|
||||
LOGGER.error("No name provided for LogSendAppender!");
|
||||
return null;
|
||||
}
|
||||
|
||||
if (layout == null) {
|
||||
layout = PatternLayout.createDefaultLayout();
|
||||
}
|
||||
return new LogSendAppender(name, filter, layout, ignoreExceptions, Property.EMPTY_ARRAY);
|
||||
}
|
||||
public class LogSendAppender {
|
||||
public static volatile LogSendService logSendService;
|
||||
public static volatile Boolean logEnabled;
|
||||
public static volatile LogSend[] logSends = new LogSend[1000];
|
||||
public static volatile AtomicInteger logSendIndex = new AtomicInteger(0);
|
||||
}
|
||||
|
||||
126
fizz-core/src/main/java/we/log/LogSendAppenderWithLog4j2.java
Normal file
126
fizz-core/src/main/java/we/log/LogSendAppenderWithLog4j2.java
Normal file
@@ -0,0 +1,126 @@
|
||||
/*
|
||||
* Copyright (C) 2020 the original author or authors.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package we.log;
|
||||
|
||||
import org.apache.logging.log4j.core.*;
|
||||
import org.apache.logging.log4j.core.appender.AbstractAppender;
|
||||
import org.apache.logging.log4j.core.config.Property;
|
||||
import org.apache.logging.log4j.core.config.plugins.Plugin;
|
||||
import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
|
||||
import org.apache.logging.log4j.core.config.plugins.PluginElement;
|
||||
import org.apache.logging.log4j.core.config.plugins.PluginFactory;
|
||||
import org.apache.logging.log4j.core.layout.PatternLayout;
|
||||
import we.FizzAppContext;
|
||||
import we.flume.clients.log4j2appender.LogService;
|
||||
import we.util.NetworkUtils;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import static we.log.LogSendAppender.*;
|
||||
|
||||
/**
|
||||
* log send appender with log4j2
|
||||
*
|
||||
* @author zhongjie
|
||||
*/
|
||||
@Plugin(name = LogSendAppenderWithLog4j2.PLUGIN_NAME, category = Core.CATEGORY_NAME, elementType = Appender.ELEMENT_TYPE, printObject = true)
|
||||
public class LogSendAppenderWithLog4j2 extends AbstractAppender {
|
||||
|
||||
static final String PLUGIN_NAME = "LogSend";
|
||||
|
||||
private LogSendAppenderWithLog4j2(String name, Filter filter, Layout<? extends Serializable> layout, boolean ignoreExceptions, Property[] properties) {
|
||||
super(name, filter, layout, ignoreExceptions, properties);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void append(LogEvent event) {
|
||||
if (logEnabled != null && !logEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (logEnabled == null && FizzAppContext.appContext == null && logSendService == null) {
|
||||
// local cache
|
||||
logSends[logSendIndex.getAndIncrement() % logSends.length] = new LogSend(this.getBizId(event.getMessage().getParameters()),
|
||||
NetworkUtils.getServerIp(), event.getLevel().intLevel(), event.getTimeMillis(), new String(this.getLayout().toByteArray(event)));
|
||||
return;
|
||||
}
|
||||
|
||||
if (logEnabled == null && logSendService == null) {
|
||||
// no legal logSendService, discard the local cache
|
||||
logEnabled = Boolean.FALSE;
|
||||
logSends = null;
|
||||
return;
|
||||
}
|
||||
|
||||
if (logEnabled == null) {
|
||||
logEnabled = Boolean.TRUE;
|
||||
|
||||
LogSend[] logSends;
|
||||
synchronized (LogSendAppender.class) {
|
||||
logSends = LogSendAppender.logSends;
|
||||
LogSendAppender.logSends = null;
|
||||
}
|
||||
|
||||
// logSendService is ready, send the local cache
|
||||
if (logSends != null) {
|
||||
int size = Math.min(logSendIndex.get(), logSends.length);
|
||||
for (int i = 0; i < size; i++) {
|
||||
logSendService.send(logSends[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LogSend logSend = new LogSend(this.getBizId(event.getMessage().getParameters()), NetworkUtils.getServerIp(),
|
||||
event.getLevel().intLevel(), event.getTimeMillis(), new String(this.getLayout().toByteArray(event)));
|
||||
logSendService.send(logSend);
|
||||
}
|
||||
|
||||
private String getBizId(Object[] parameters) {
|
||||
Object bizId = LogService.getBizId();
|
||||
if (parameters != null) {
|
||||
for (int i = parameters.length - 1; i > -1; --i) {
|
||||
Object p = parameters[i];
|
||||
if (p == LogService.BIZ_ID) {
|
||||
if (i != parameters.length - 1) {
|
||||
bizId = parameters[i + 1];
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (bizId == null) {
|
||||
return "";
|
||||
}
|
||||
return bizId.toString();
|
||||
}
|
||||
|
||||
@PluginFactory
|
||||
public static LogSendAppenderWithLog4j2 createAppender(@PluginAttribute("name") String name,
|
||||
@PluginElement("Filter") final Filter filter,
|
||||
@PluginElement("Layout") Layout<? extends Serializable> layout,
|
||||
@PluginAttribute("ignoreExceptions") boolean ignoreExceptions) {
|
||||
if (name == null) {
|
||||
LOGGER.error("No name provided for LogSendAppender!");
|
||||
return null;
|
||||
}
|
||||
|
||||
if (layout == null) {
|
||||
layout = PatternLayout.createDefaultLayout();
|
||||
}
|
||||
return new LogSendAppenderWithLog4j2(name, filter, layout, ignoreExceptions, Property.EMPTY_ARRAY);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
package we.log;
|
||||
|
||||
import ch.qos.logback.classic.spi.ILoggingEvent;
|
||||
import ch.qos.logback.core.AppenderBase;
|
||||
import ch.qos.logback.core.Layout;
|
||||
import ch.qos.logback.core.LogbackException;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import we.FizzAppContext;
|
||||
import we.flume.clients.log4j2appender.LogService;
|
||||
import we.util.NetworkUtils;
|
||||
|
||||
import static we.log.LogSendAppender.*;
|
||||
|
||||
/**
|
||||
* log send appender with logback
|
||||
*
|
||||
* @author huahuang
|
||||
*/
|
||||
public class LogSendAppenderWithLogback extends AppenderBase<ILoggingEvent> {
|
||||
|
||||
//负责将日志事件转换为字符串,需Getter和Setter方法
|
||||
@Getter
|
||||
@Setter
|
||||
private Layout<ILoggingEvent> layout;
|
||||
|
||||
@Override
|
||||
protected void append(ILoggingEvent event) {
|
||||
try {
|
||||
if (logEnabled != null && !logEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (logEnabled == null && FizzAppContext.appContext == null && logSendService == null) {
|
||||
// local cache
|
||||
logSends[logSendIndex.getAndIncrement() % logSends.length] = new LogSend(
|
||||
this.getBizId(event.getArgumentArray()), NetworkUtils.getServerIp(), event.getLevel().levelInt,
|
||||
event.getTimeStamp(), this.getLayout().doLayout(event));
|
||||
return;
|
||||
}
|
||||
|
||||
if (logEnabled == null && logSendService == null) {
|
||||
// no legal logSendService, discard the local cache
|
||||
logEnabled = Boolean.FALSE;
|
||||
logSends = null;
|
||||
return;
|
||||
}
|
||||
|
||||
if (logEnabled == null) {
|
||||
logEnabled = Boolean.TRUE;
|
||||
|
||||
LogSend[] logSends;
|
||||
synchronized (LogSendAppender.class) {
|
||||
logSends = LogSendAppender.logSends;
|
||||
LogSendAppender.logSends = null;
|
||||
}
|
||||
|
||||
// logSendService is ready, send the local cache
|
||||
if (logSends != null) {
|
||||
int size = Math.min(logSendIndex.get(), logSends.length);
|
||||
for (int i = 0; i < size; i++) {
|
||||
logSendService.send(logSends[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LogSend logSend = new LogSend(this.getBizId(event.getArgumentArray()), NetworkUtils.getServerIp(),
|
||||
event.getLevel().levelInt, event.getTimeStamp(), this.getLayout().doLayout(event));
|
||||
logSendService.send(logSend);
|
||||
} catch (Exception ex) {
|
||||
throw new LogbackException(event.getFormattedMessage(), ex);
|
||||
}
|
||||
}
|
||||
|
||||
private String getBizId(Object[] parameters) {
|
||||
Object bizId = LogService.getBizId();
|
||||
if (parameters != null) {
|
||||
for (int i = parameters.length - 1; i > -1; --i) {
|
||||
Object p = parameters[i];
|
||||
if (p == LogService.BIZ_ID) {
|
||||
if (i != parameters.length - 1) {
|
||||
bizId = parameters[i + 1];
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (bizId == null) {
|
||||
return "";
|
||||
}
|
||||
return bizId.toString();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -17,7 +17,7 @@
|
||||
package we.log;
|
||||
|
||||
/**
|
||||
* log send service interface, used by {@link LogSendAppender} to send log to fizz-manager
|
||||
* log send service interface, used by {@link LogSendAppenderWithLog4j2} to send log to fizz-manager
|
||||
*
|
||||
* @author zhongjie
|
||||
*/
|
||||
|
||||
@@ -19,12 +19,13 @@ package we.plugin.auth;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.data.redis.core.ReactiveStringRedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import we.flume.clients.log4j2appender.LogService;
|
||||
import we.config.AggregateRedisConfig;
|
||||
import we.flume.clients.log4j2appender.LogService;
|
||||
import we.util.Constants;
|
||||
import we.util.JacksonUtils;
|
||||
import we.util.NetworkUtils;
|
||||
@@ -60,6 +61,9 @@ public class GatewayGroupService {
|
||||
@Resource(name = AggregateRedisConfig.AGGREGATE_REACTIVE_REDIS_TEMPLATE)
|
||||
private ReactiveStringRedisTemplate rt;
|
||||
|
||||
@Resource
|
||||
private Environment environment;
|
||||
|
||||
@PostConstruct
|
||||
public void init() throws Throwable {
|
||||
this.init(this::lsnGatewayGroupChange);
|
||||
@@ -181,10 +185,11 @@ public class GatewayGroupService {
|
||||
private void updateCurrentGatewayGroupSet(Set<String> currentGatewayGroupSet, Map<String,
|
||||
GatewayGroup> gatewayGroupMap) {
|
||||
String ip = NetworkUtils.getServerIp();
|
||||
String applicationName = environment.getProperty("spring.application.name");
|
||||
currentGatewayGroupSet.clear();
|
||||
gatewayGroupMap.forEach(
|
||||
(k, gg) -> {
|
||||
if (gg.gateways.contains(ip)) {
|
||||
if (gg.gateways.contains(ip) || gg.gateways.contains(applicationName)) {
|
||||
currentGatewayGroupSet.add(gg.group);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user