Merge pull request #1552 from nkorange/hotfix_log_optimization
Fix #290
This commit is contained in:
commit
9b2367eb91
@ -105,6 +105,8 @@ public class HostReactor {
|
|||||||
return oldService;
|
return oldService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean changed = false;
|
||||||
|
|
||||||
if (oldService != null) {
|
if (oldService != null) {
|
||||||
if (oldService.getLastRefTime() > serviceInfo.getLastRefTime()) {
|
if (oldService.getLastRefTime() > serviceInfo.getLastRefTime()) {
|
||||||
NAMING_LOGGER.warn("out of date data received, old-t: " + oldService.getLastRefTime()
|
NAMING_LOGGER.warn("out of date data received, old-t: " + oldService.getLastRefTime()
|
||||||
@ -157,16 +159,19 @@ public class HostReactor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (newHosts.size() > 0) {
|
if (newHosts.size() > 0) {
|
||||||
|
changed = true;
|
||||||
NAMING_LOGGER.info("new ips(" + newHosts.size() + ") service: "
|
NAMING_LOGGER.info("new ips(" + newHosts.size() + ") service: "
|
||||||
+ serviceInfo.getName() + " -> " + JSON.toJSONString(newHosts));
|
+ serviceInfo.getName() + " -> " + JSON.toJSONString(newHosts));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (remvHosts.size() > 0) {
|
if (remvHosts.size() > 0) {
|
||||||
|
changed = true;
|
||||||
NAMING_LOGGER.info("removed ips(" + remvHosts.size() + ") service: "
|
NAMING_LOGGER.info("removed ips(" + remvHosts.size() + ") service: "
|
||||||
+ serviceInfo.getName() + " -> " + JSON.toJSONString(remvHosts));
|
+ serviceInfo.getName() + " -> " + JSON.toJSONString(remvHosts));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (modHosts.size() > 0) {
|
if (modHosts.size() > 0) {
|
||||||
|
changed = true;
|
||||||
NAMING_LOGGER.info("modified ips(" + modHosts.size() + ") service: "
|
NAMING_LOGGER.info("modified ips(" + modHosts.size() + ") service: "
|
||||||
+ serviceInfo.getName() + " -> " + JSON.toJSONString(modHosts));
|
+ serviceInfo.getName() + " -> " + JSON.toJSONString(modHosts));
|
||||||
}
|
}
|
||||||
@ -189,8 +194,10 @@ public class HostReactor {
|
|||||||
|
|
||||||
MetricsMonitor.getServiceInfoMapSizeMonitor().set(serviceInfoMap.size());
|
MetricsMonitor.getServiceInfoMapSizeMonitor().set(serviceInfoMap.size());
|
||||||
|
|
||||||
NAMING_LOGGER.info("current ips:(" + serviceInfo.ipCount() + ") service: " + serviceInfo.getName() +
|
if (changed) {
|
||||||
" -> " + JSON.toJSONString(serviceInfo.getHosts()));
|
NAMING_LOGGER.info("current ips:(" + serviceInfo.ipCount() + ") service: " + serviceInfo.getName() +
|
||||||
|
" -> " + JSON.toJSONString(serviceInfo.getHosts()));
|
||||||
|
}
|
||||||
|
|
||||||
return serviceInfo;
|
return serviceInfo;
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,8 @@ import com.alibaba.nacos.config.server.constant.Constants;
|
|||||||
import com.alibaba.nacos.config.server.service.PersistService;
|
import com.alibaba.nacos.config.server.service.PersistService;
|
||||||
import com.alibaba.nacos.config.server.service.dump.DumpService;
|
import com.alibaba.nacos.config.server.service.dump.DumpService;
|
||||||
|
|
||||||
|
import com.alibaba.nacos.config.server.utils.LogUtil;
|
||||||
|
import com.alibaba.nacos.core.utils.WebUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -63,4 +65,13 @@ public class OpsController {
|
|||||||
return HttpServletResponse.SC_OK + "";
|
return HttpServletResponse.SC_OK + "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/log", method = RequestMethod.PUT)
|
||||||
|
@ResponseBody
|
||||||
|
public String setLogLevel(HttpServletRequest request) {
|
||||||
|
String logName = WebUtils.required(request, "logName");
|
||||||
|
String logLevel = WebUtils.required(request, "logLevel");
|
||||||
|
LogUtil.setLogLevel(logName, logLevel);
|
||||||
|
return HttpServletResponse.SC_OK + "";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ public class MemoryMonitor {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static final long DELAY_SECONDS = 10;
|
private static final long DELAY_SECONDS = 10;
|
||||||
|
|
||||||
@Scheduled(cron = "0 0 0 * * ?")
|
@Scheduled(cron = "0 0 0 * * ?")
|
||||||
public void clear() {
|
public void clear() {
|
||||||
@ -89,9 +89,7 @@ class NotifyTaskQueueMonitorTask implements Runnable {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
int size = ((ScheduledThreadPoolExecutor)notifySingleService.getExecutor()).getQueue().size();
|
int size = ((ScheduledThreadPoolExecutor)notifySingleService.getExecutor()).getQueue().size();
|
||||||
memoryLog.info("notifySingleServiceThreadPool-{}, toNotifyTaskSize={}",
|
memoryLog.info("toNotifyTaskSize={}", size);
|
||||||
new Object[] {((ScheduledThreadPoolExecutor)notifySingleService.getExecutor()).getClass().getName(),
|
|
||||||
size});
|
|
||||||
MetricsMonitor.getNotifyTaskMonitor().set(size);
|
MetricsMonitor.getNotifyTaskMonitor().set(size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -302,7 +302,9 @@ public class BasicDataSourceServiceImpl implements DataSourceService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
defaultLog.info("check master db.");
|
if (defaultLog.isDebugEnabled()) {
|
||||||
|
defaultLog.debug("check master db.");
|
||||||
|
}
|
||||||
boolean isFound = false;
|
boolean isFound = false;
|
||||||
|
|
||||||
int index = -1;
|
int index = -1;
|
||||||
@ -339,7 +341,9 @@ public class BasicDataSourceServiceImpl implements DataSourceService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
defaultLog.info("check db health.");
|
if (defaultLog.isDebugEnabled()) {
|
||||||
|
defaultLog.debug("check db health.");
|
||||||
|
}
|
||||||
String sql = "SELECT * FROM config_info_beta WHERE id = 1";
|
String sql = "SELECT * FROM config_info_beta WHERE id = 1";
|
||||||
|
|
||||||
for (int i = 0; i < testJTList.size(); i++) {
|
for (int i = 0; i < testJTList.size(); i++) {
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.alibaba.nacos.config.server.utils;
|
package com.alibaba.nacos.config.server.utils;
|
||||||
|
|
||||||
|
import ch.qos.logback.classic.Level;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -28,46 +29,74 @@ public class LogUtil {
|
|||||||
/**
|
/**
|
||||||
* 默认的日志
|
* 默认的日志
|
||||||
*/
|
*/
|
||||||
static public final Logger defaultLog = LoggerFactory.getLogger("com.alibaba.nacos.config.startLog");
|
public static final Logger defaultLog = LoggerFactory.getLogger("com.alibaba.nacos.config.startLog");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 致命错误,需要告警
|
* 致命错误,需要告警
|
||||||
*/
|
*/
|
||||||
static public final Logger fatalLog = LoggerFactory
|
public static final Logger fatalLog = LoggerFactory
|
||||||
.getLogger("com.alibaba.nacos.config.fatal");
|
.getLogger("com.alibaba.nacos.config.fatal");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 客户端GET方法获取数据的日志
|
* 客户端GET方法获取数据的日志
|
||||||
*/
|
*/
|
||||||
static public final Logger pullLog = LoggerFactory
|
public static final Logger pullLog = LoggerFactory
|
||||||
.getLogger("com.alibaba.nacos.config.pullLog");
|
.getLogger("com.alibaba.nacos.config.pullLog");
|
||||||
|
|
||||||
static public final Logger pullCheckLog = LoggerFactory
|
public static final Logger pullCheckLog = LoggerFactory
|
||||||
.getLogger("com.alibaba.nacos.config.pullCheckLog");
|
.getLogger("com.alibaba.nacos.config.pullCheckLog");
|
||||||
/**
|
/**
|
||||||
* 从DB dump数据的日志
|
* 从DB dump数据的日志
|
||||||
*/
|
*/
|
||||||
static public final Logger dumpLog = LoggerFactory
|
public static final Logger dumpLog = LoggerFactory
|
||||||
.getLogger("com.alibaba.nacos.config.dumpLog");
|
.getLogger("com.alibaba.nacos.config.dumpLog");
|
||||||
|
|
||||||
static public final Logger memoryLog = LoggerFactory
|
public static final Logger memoryLog = LoggerFactory
|
||||||
.getLogger("com.alibaba.nacos.config.monitorLog");
|
.getLogger("com.alibaba.nacos.config.monitorLog");
|
||||||
|
|
||||||
static public final Logger clientLog = LoggerFactory
|
public static final Logger clientLog = LoggerFactory
|
||||||
.getLogger("com.alibaba.nacos.config.clientLog");
|
.getLogger("com.alibaba.nacos.config.clientLog");
|
||||||
|
|
||||||
static public final Logger sdkLog = LoggerFactory
|
public static final Logger traceLog = LoggerFactory
|
||||||
.getLogger("com.alibaba.nacos.config.sdkLog");
|
|
||||||
|
|
||||||
static public final Logger traceLog = LoggerFactory
|
|
||||||
.getLogger("com.alibaba.nacos.config.traceLog");
|
.getLogger("com.alibaba.nacos.config.traceLog");
|
||||||
|
|
||||||
static public final Logger aclLog = LoggerFactory
|
public static final Logger notifyLog = LoggerFactory
|
||||||
.getLogger("com.alibaba.nacos.config.aclLog");
|
|
||||||
|
|
||||||
static public final Logger notifyLog = LoggerFactory
|
|
||||||
.getLogger("com.alibaba.nacos.config.notifyLog");
|
.getLogger("com.alibaba.nacos.config.notifyLog");
|
||||||
|
|
||||||
static public final Logger appCollectorLog = LoggerFactory
|
public static void setLogLevel(String logName, String level) {
|
||||||
.getLogger("com.alibaba.nacos.config.appCollectorLog");
|
|
||||||
|
switch (logName) {
|
||||||
|
case "config-server":
|
||||||
|
((ch.qos.logback.classic.Logger) defaultLog).setLevel(Level.valueOf(level));
|
||||||
|
break;
|
||||||
|
case "config-fatal":
|
||||||
|
((ch.qos.logback.classic.Logger) fatalLog).setLevel(Level.valueOf(level));
|
||||||
|
break;
|
||||||
|
case "config-pull":
|
||||||
|
((ch.qos.logback.classic.Logger) pullLog).setLevel(Level.valueOf(level));
|
||||||
|
break;
|
||||||
|
case "config-pull-check":
|
||||||
|
((ch.qos.logback.classic.Logger) pullCheckLog).setLevel(Level.valueOf(level));
|
||||||
|
break;
|
||||||
|
case "config-dump":
|
||||||
|
((ch.qos.logback.classic.Logger) dumpLog).setLevel(Level.valueOf(level));
|
||||||
|
break;
|
||||||
|
case "config-memory":
|
||||||
|
((ch.qos.logback.classic.Logger) memoryLog).setLevel(Level.valueOf(level));
|
||||||
|
break;
|
||||||
|
case "config-client-request":
|
||||||
|
((ch.qos.logback.classic.Logger) clientLog).setLevel(Level.valueOf(level));
|
||||||
|
break;
|
||||||
|
case "config-trace":
|
||||||
|
((ch.qos.logback.classic.Logger) traceLog).setLevel(Level.valueOf(level));
|
||||||
|
break;
|
||||||
|
case "config-notify":
|
||||||
|
((ch.qos.logback.classic.Logger) notifyLog).setLevel(Level.valueOf(level));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${nacos.home}/logs/cmdb-main.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
<fileNamePattern>${nacos.home}/logs/cmdb-main.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
||||||
<maxFileSize>2GB</maxFileSize>
|
<maxFileSize>2GB</maxFileSize>
|
||||||
<MaxHistory>15</MaxHistory>
|
<MaxHistory>7</MaxHistory>
|
||||||
<totalSizeCap>7GB</totalSizeCap>
|
<totalSizeCap>7GB</totalSizeCap>
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@ -34,8 +34,8 @@
|
|||||||
<append>true</append>
|
<append>true</append>
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${LOG_HOME}/naming-server.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
<fileNamePattern>${LOG_HOME}/naming-server.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
||||||
<maxFileSize>2GB</maxFileSize>
|
<maxFileSize>1GB</maxFileSize>
|
||||||
<MaxHistory>15</MaxHistory>
|
<MaxHistory>7</MaxHistory>
|
||||||
<totalSizeCap>7GB</totalSizeCap>
|
<totalSizeCap>7GB</totalSizeCap>
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@ -59,7 +59,7 @@
|
|||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${LOG_HOME}/naming-raft.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
<fileNamePattern>${LOG_HOME}/naming-raft.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
||||||
<maxFileSize>1GB</maxFileSize>
|
<maxFileSize>1GB</maxFileSize>
|
||||||
<MaxHistory>15</MaxHistory>
|
<MaxHistory>7</MaxHistory>
|
||||||
<totalSizeCap>3GB</totalSizeCap>
|
<totalSizeCap>3GB</totalSizeCap>
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@ -77,14 +77,14 @@
|
|||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
|
|
||||||
<appender name="naming-ephemeral"
|
<appender name="naming-distro"
|
||||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
<file>${LOG_HOME}/naming-ephemeral.log</file>
|
<file>${LOG_HOME}/naming-distro.log</file>
|
||||||
<append>true</append>
|
<append>true</append>
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${LOG_HOME}/naming-ephemeral.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
<fileNamePattern>${LOG_HOME}/naming-distro.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
||||||
<maxFileSize>1GB</maxFileSize>
|
<maxFileSize>1GB</maxFileSize>
|
||||||
<MaxHistory>15</MaxHistory>
|
<MaxHistory>7</MaxHistory>
|
||||||
<totalSizeCap>3GB</totalSizeCap>
|
<totalSizeCap>3GB</totalSizeCap>
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@ -94,11 +94,11 @@
|
|||||||
</encoder>
|
</encoder>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
<appender name="async-naming-ephemeral" class="ch.qos.logback.classic.AsyncAppender">
|
<appender name="async-naming-distro" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
<discardingThreshold>0</discardingThreshold>
|
<discardingThreshold>0</discardingThreshold>
|
||||||
<queueSize>1024</queueSize>
|
<queueSize>1024</queueSize>
|
||||||
<neverBlock>true</neverBlock>
|
<neverBlock>true</neverBlock>
|
||||||
<appender-ref ref="naming-ephemeral"/>
|
<appender-ref ref="naming-distro"/>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
<appender name="naming-event"
|
<appender name="naming-event"
|
||||||
@ -108,7 +108,7 @@
|
|||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${LOG_HOME}/naming-event.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
<fileNamePattern>${LOG_HOME}/naming-event.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
||||||
<maxFileSize>1GB</maxFileSize>
|
<maxFileSize>1GB</maxFileSize>
|
||||||
<MaxHistory>15</MaxHistory>
|
<MaxHistory>7</MaxHistory>
|
||||||
<totalSizeCap>3GB</totalSizeCap>
|
<totalSizeCap>3GB</totalSizeCap>
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@ -132,7 +132,7 @@
|
|||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${LOG_HOME}/naming-push.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
<fileNamePattern>${LOG_HOME}/naming-push.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
||||||
<maxFileSize>1GB</maxFileSize>
|
<maxFileSize>1GB</maxFileSize>
|
||||||
<MaxHistory>15</MaxHistory>
|
<MaxHistory>7</MaxHistory>
|
||||||
<totalSizeCap>3GB</totalSizeCap>
|
<totalSizeCap>3GB</totalSizeCap>
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@ -148,7 +148,7 @@
|
|||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${LOG_HOME}/naming-rt.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
<fileNamePattern>${LOG_HOME}/naming-rt.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
||||||
<maxFileSize>1GB</maxFileSize>
|
<maxFileSize>1GB</maxFileSize>
|
||||||
<MaxHistory>15</MaxHistory>
|
<MaxHistory>7</MaxHistory>
|
||||||
<totalSizeCap>3GB</totalSizeCap>
|
<totalSizeCap>3GB</totalSizeCap>
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@ -165,7 +165,7 @@
|
|||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${LOG_HOME}/naming-performance.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
<fileNamePattern>${LOG_HOME}/naming-performance.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
||||||
<maxFileSize>1GB</maxFileSize>
|
<maxFileSize>1GB</maxFileSize>
|
||||||
<MaxHistory>15</MaxHistory>
|
<MaxHistory>7</MaxHistory>
|
||||||
<totalSizeCap>3GB</totalSizeCap>
|
<totalSizeCap>3GB</totalSizeCap>
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@ -175,109 +175,6 @@
|
|||||||
</encoder>
|
</encoder>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
<appender name="naming-router"
|
|
||||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<file>${LOG_HOME}/naming-router.log</file>
|
|
||||||
<append>true</append>
|
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
||||||
<fileNamePattern>${LOG_HOME}/naming-router.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
|
||||||
<maxFileSize>2GB</maxFileSize>
|
|
||||||
<MaxHistory>15</MaxHistory>
|
|
||||||
<totalSizeCap>7GB</totalSizeCap>
|
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
|
||||||
</rollingPolicy>
|
|
||||||
<encoder>
|
|
||||||
<Pattern>%date|%msg%n</Pattern>
|
|
||||||
<charset>UTF-8</charset>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<appender name="naming-cache"
|
|
||||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<file>${LOG_HOME}/naming-cache.log</file>
|
|
||||||
<append>true</append>
|
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
||||||
<fileNamePattern>${LOG_HOME}/naming-cache.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
|
||||||
<maxFileSize>1GB</maxFileSize>
|
|
||||||
<MaxHistory>15</MaxHistory>
|
|
||||||
<totalSizeCap>3GB</totalSizeCap>
|
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
|
||||||
</rollingPolicy>
|
|
||||||
<encoder>
|
|
||||||
<Pattern>%date|%msg%n</Pattern>
|
|
||||||
<charset>UTF-8</charset>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<appender name="naming-device"
|
|
||||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<file>${LOG_HOME}/naming-device.log</file>
|
|
||||||
<append>true</append>
|
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
||||||
<fileNamePattern>${LOG_HOME}/naming-device.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
|
||||||
<maxFileSize>2GB</maxFileSize>
|
|
||||||
<MaxHistory>15</MaxHistory>
|
|
||||||
<totalSizeCap>7GB</totalSizeCap>
|
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
|
||||||
</rollingPolicy>
|
|
||||||
<encoder>
|
|
||||||
<Pattern>%date|%msg%n</Pattern>
|
|
||||||
<charset>UTF-8</charset>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<appender name="naming-tag"
|
|
||||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<file>${LOG_HOME}/naming-tag.log</file>
|
|
||||||
<append>true</append>
|
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
||||||
<fileNamePattern>${LOG_HOME}/naming-tag.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
|
||||||
<maxFileSize>1GB</maxFileSize>
|
|
||||||
<MaxHistory>15</MaxHistory>
|
|
||||||
<totalSizeCap>3GB</totalSizeCap>
|
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
|
||||||
</rollingPolicy>
|
|
||||||
<encoder>
|
|
||||||
<Pattern>%date %level %msg%n%n</Pattern>
|
|
||||||
<charset>UTF-8</charset>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<appender name="naming-tenant"
|
|
||||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<file>${LOG_HOME}/naming-tenant.log</file>
|
|
||||||
<append>true</append>
|
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
||||||
<fileNamePattern>${LOG_HOME}/naming-tenant.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
|
||||||
<maxFileSize>1GB</maxFileSize>
|
|
||||||
<MaxHistory>15</MaxHistory>
|
|
||||||
<totalSizeCap>3GB</totalSizeCap>
|
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
|
||||||
</rollingPolicy>
|
|
||||||
<encoder>
|
|
||||||
<Pattern>%date %level %msg%n%n</Pattern>
|
|
||||||
<charset>UTF-8</charset>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<appender name="naming-debug"
|
|
||||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<file>${LOG_HOME}/naming-debug.log</file>
|
|
||||||
<append>true</append>
|
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
||||||
<fileNamePattern>${LOG_HOME}/naming-debug.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
|
||||||
<maxFileSize>1GB</maxFileSize>
|
|
||||||
<MaxHistory>15</MaxHistory>
|
|
||||||
<totalSizeCap>3GB</totalSizeCap>
|
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
|
||||||
</rollingPolicy>
|
|
||||||
<encoder>
|
|
||||||
<Pattern>%date %level %msg%n%n</Pattern>
|
|
||||||
<charset>UTF-8</charset>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
|
|
||||||
<!--config module logback config-->
|
<!--config module logback config-->
|
||||||
<appender name="dumpFile"
|
<appender name="dumpFile"
|
||||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
@ -286,7 +183,7 @@
|
|||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${LOG_HOME}/config-dump.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
<fileNamePattern>${LOG_HOME}/config-dump.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
||||||
<maxFileSize>2GB</maxFileSize>
|
<maxFileSize>2GB</maxFileSize>
|
||||||
<MaxHistory>15</MaxHistory>
|
<MaxHistory>7</MaxHistory>
|
||||||
<totalSizeCap>7GB</totalSizeCap>
|
<totalSizeCap>7GB</totalSizeCap>
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@ -302,7 +199,7 @@
|
|||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${LOG_HOME}/config-pull.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
<fileNamePattern>${LOG_HOME}/config-pull.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
||||||
<maxFileSize>20MB</maxFileSize>
|
<maxFileSize>20MB</maxFileSize>
|
||||||
<MaxHistory>15</MaxHistory>
|
<MaxHistory>7</MaxHistory>
|
||||||
<totalSizeCap>128MB</totalSizeCap>
|
<totalSizeCap>128MB</totalSizeCap>
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@ -318,7 +215,7 @@
|
|||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${LOG_HOME}/config-fatal.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
<fileNamePattern>${LOG_HOME}/config-fatal.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
||||||
<maxFileSize>20MB</maxFileSize>
|
<maxFileSize>20MB</maxFileSize>
|
||||||
<MaxHistory>15</MaxHistory>
|
<MaxHistory>7</MaxHistory>
|
||||||
<totalSizeCap>128MB</totalSizeCap>
|
<totalSizeCap>128MB</totalSizeCap>
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@ -334,7 +231,7 @@
|
|||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${LOG_HOME}/config-memory.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
<fileNamePattern>${LOG_HOME}/config-memory.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
||||||
<maxFileSize>20MB</maxFileSize>
|
<maxFileSize>20MB</maxFileSize>
|
||||||
<MaxHistory>15</MaxHistory>
|
<MaxHistory>7</MaxHistory>
|
||||||
<totalSizeCap>128MB</totalSizeCap>
|
<totalSizeCap>128MB</totalSizeCap>
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@ -350,7 +247,7 @@
|
|||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${LOG_HOME}/config-pull-check.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
<fileNamePattern>${LOG_HOME}/config-pull-check.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
||||||
<maxFileSize>1GB</maxFileSize>
|
<maxFileSize>1GB</maxFileSize>
|
||||||
<MaxHistory>15</MaxHistory>
|
<MaxHistory>7</MaxHistory>
|
||||||
<totalSizeCap>3GB</totalSizeCap>
|
<totalSizeCap>3GB</totalSizeCap>
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@ -360,23 +257,6 @@
|
|||||||
</encoder>
|
</encoder>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
<appender name="aclLog"
|
|
||||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<file>${LOG_HOME}/config-acl.log</file>
|
|
||||||
<append>true</append>
|
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
||||||
<fileNamePattern>${LOG_HOME}/config-acl.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
|
||||||
<maxFileSize>50MB</maxFileSize>
|
|
||||||
<MaxHistory>15</MaxHistory>
|
|
||||||
<totalSizeCap>512MB</totalSizeCap>
|
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
|
||||||
</rollingPolicy>
|
|
||||||
<encoder>
|
|
||||||
<Pattern>%date %level %msg%n%n</Pattern>
|
|
||||||
<charset>UTF-8</charset>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<appender name="clientLog"
|
<appender name="clientLog"
|
||||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
<file>${LOG_HOME}/config-client-request.log</file>
|
<file>${LOG_HOME}/config-client-request.log</file>
|
||||||
@ -384,7 +264,7 @@
|
|||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${LOG_HOME}/config-client-request.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
<fileNamePattern>${LOG_HOME}/config-client-request.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
||||||
<maxFileSize>2GB</maxFileSize>
|
<maxFileSize>2GB</maxFileSize>
|
||||||
<MaxHistory>15</MaxHistory>
|
<MaxHistory>7</MaxHistory>
|
||||||
<totalSizeCap>7GB</totalSizeCap>
|
<totalSizeCap>7GB</totalSizeCap>
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@ -394,23 +274,6 @@
|
|||||||
</encoder>
|
</encoder>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
<appender name="sdkLog"
|
|
||||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<file>${LOG_HOME}/config-sdk-request.log</file>
|
|
||||||
<append>true</append>
|
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
||||||
<fileNamePattern>${LOG_HOME}/config-sdk-request.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
|
||||||
<maxFileSize>1GB</maxFileSize>
|
|
||||||
<MaxHistory>15</MaxHistory>
|
|
||||||
<totalSizeCap>3GB</totalSizeCap>
|
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
|
||||||
</rollingPolicy>
|
|
||||||
<encoder>
|
|
||||||
<Pattern>%date|%msg%n</Pattern>
|
|
||||||
<charset>UTF-8</charset>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<appender name="traceLog"
|
<appender name="traceLog"
|
||||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
<file>${LOG_HOME}/config-trace.log</file>
|
<file>${LOG_HOME}/config-trace.log</file>
|
||||||
@ -418,7 +281,7 @@
|
|||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${LOG_HOME}/config-trace.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
<fileNamePattern>${LOG_HOME}/config-trace.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
||||||
<maxFileSize>2GB</maxFileSize>
|
<maxFileSize>2GB</maxFileSize>
|
||||||
<MaxHistory>15</MaxHistory>
|
<MaxHistory>7</MaxHistory>
|
||||||
<totalSizeCap>7GB</totalSizeCap>
|
<totalSizeCap>7GB</totalSizeCap>
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@ -435,7 +298,7 @@
|
|||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${LOG_HOME}/config-notify.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
<fileNamePattern>${LOG_HOME}/config-notify.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
||||||
<maxFileSize>1GB</maxFileSize>
|
<maxFileSize>1GB</maxFileSize>
|
||||||
<MaxHistory>15</MaxHistory>
|
<MaxHistory>7</MaxHistory>
|
||||||
<totalSizeCap>3GB</totalSizeCap>
|
<totalSizeCap>3GB</totalSizeCap>
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@ -445,23 +308,6 @@
|
|||||||
</encoder>
|
</encoder>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
<appender name="appCollectorLog"
|
|
||||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
||||||
<file>${LOG_HOME}/config-app.log</file>
|
|
||||||
<append>true</append>
|
|
||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
||||||
<fileNamePattern>${LOG_HOME}/config-app.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
|
||||||
<maxFileSize>20MB</maxFileSize>
|
|
||||||
<MaxHistory>15</MaxHistory>
|
|
||||||
<totalSizeCap>128MB</totalSizeCap>
|
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
|
||||||
</rollingPolicy>
|
|
||||||
<encoder>
|
|
||||||
<Pattern>%date %level %msg%n%n</Pattern>
|
|
||||||
<charset>UTF-8</charset>
|
|
||||||
</encoder>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<appender name="startLog"
|
<appender name="startLog"
|
||||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
<file>${LOG_HOME}/config-server.log</file>
|
<file>${LOG_HOME}/config-server.log</file>
|
||||||
@ -469,7 +315,7 @@
|
|||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${LOG_HOME}/config-server.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
<fileNamePattern>${LOG_HOME}/config-server.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
||||||
<maxFileSize>50MB</maxFileSize>
|
<maxFileSize>50MB</maxFileSize>
|
||||||
<MaxHistory>15</MaxHistory>
|
<MaxHistory>7</MaxHistory>
|
||||||
<totalSizeCap>512MB</totalSizeCap>
|
<totalSizeCap>512MB</totalSizeCap>
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@ -486,7 +332,7 @@
|
|||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${LOG_HOME}/nacos.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
<fileNamePattern>${LOG_HOME}/nacos.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
||||||
<maxFileSize>50MB</maxFileSize>
|
<maxFileSize>50MB</maxFileSize>
|
||||||
<MaxHistory>15</MaxHistory>
|
<MaxHistory>7</MaxHistory>
|
||||||
<totalSizeCap>512MB</totalSizeCap>
|
<totalSizeCap>512MB</totalSizeCap>
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@ -503,7 +349,7 @@
|
|||||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
<fileNamePattern>${LOG_HOME}/nacos-address.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
<fileNamePattern>${LOG_HOME}/nacos-address.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
|
||||||
<maxFileSize>2GB</maxFileSize>
|
<maxFileSize>2GB</maxFileSize>
|
||||||
<MaxHistory>15</MaxHistory>
|
<MaxHistory>7</MaxHistory>
|
||||||
<totalSizeCap>7GB</totalSizeCap>
|
<totalSizeCap>7GB</totalSizeCap>
|
||||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||||
</rollingPolicy>
|
</rollingPolicy>
|
||||||
@ -531,9 +377,9 @@
|
|||||||
<level value="INFO"/>
|
<level value="INFO"/>
|
||||||
<appender-ref ref="async-naming-raft"/>
|
<appender-ref ref="async-naming-raft"/>
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="com.alibaba.nacos.naming.ephemeral" additivity="false">
|
<logger name="com.alibaba.nacos.naming.distro" additivity="false">
|
||||||
<level value="DEBUG"/>
|
<level value="INFO"/>
|
||||||
<appender-ref ref="async-naming-ephemeral"/>
|
<appender-ref ref="async-naming-distro"/>
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="com.alibaba.nacos.naming.event" additivity="false">
|
<logger name="com.alibaba.nacos.naming.event" additivity="false">
|
||||||
<level value="INFO"/>
|
<level value="INFO"/>
|
||||||
@ -551,22 +397,6 @@
|
|||||||
<level value="INFO"/>
|
<level value="INFO"/>
|
||||||
<appender-ref ref="naming-performance"/>
|
<appender-ref ref="naming-performance"/>
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="com.alibaba.nacos.naming.router" additivity="false">
|
|
||||||
<level value="INFO"/>
|
|
||||||
<appender-ref ref="naming-router"/>
|
|
||||||
</logger>
|
|
||||||
<logger name="com.alibaba.nacos.naming.cache" additivity="false">
|
|
||||||
<level value="INFO"/>
|
|
||||||
<appender-ref ref="naming-cache"/>
|
|
||||||
</logger>
|
|
||||||
<logger name="com.alibaba.nacos.naming.tenant" additivity="false">
|
|
||||||
<level value="INFO"/>
|
|
||||||
<appender-ref ref="naming-tenant"/>
|
|
||||||
</logger>
|
|
||||||
<logger name="com.alibaba.nacos.naming.debug" additivity="false">
|
|
||||||
<level value="INFO"/>
|
|
||||||
<appender-ref ref="naming-debug"/>
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<logger name="com.alibaba.nacos.config.dumpLog" additivity="false">
|
<logger name="com.alibaba.nacos.config.dumpLog" additivity="false">
|
||||||
<level value="INFO"/>
|
<level value="INFO"/>
|
||||||
@ -589,21 +419,11 @@
|
|||||||
<appender-ref ref="memoryFile"/>
|
<appender-ref ref="memoryFile"/>
|
||||||
</logger>
|
</logger>
|
||||||
|
|
||||||
<logger name="com.alibaba.nacos.config.aclLog" additivity="false">
|
|
||||||
<level value="INFO"/>
|
|
||||||
<appender-ref ref="aclLog"/>
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<logger name="com.alibaba.nacos.config.clientLog" additivity="false">
|
<logger name="com.alibaba.nacos.config.clientLog" additivity="false">
|
||||||
<level value="info"/>
|
<level value="info"/>
|
||||||
<appender-ref ref="clientLog"/>
|
<appender-ref ref="clientLog"/>
|
||||||
</logger>
|
</logger>
|
||||||
|
|
||||||
<logger name="com.alibaba.nacos.config.sdkLog" additivity="false">
|
|
||||||
<level value="INFO"/>
|
|
||||||
<appender-ref ref="sdkLog"/>
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<logger name="com.alibaba.nacos.config.notifyLog" additivity="false">
|
<logger name="com.alibaba.nacos.config.notifyLog" additivity="false">
|
||||||
<level value="INFO"/>
|
<level value="INFO"/>
|
||||||
<appender-ref ref="notifyLog"/>
|
<appender-ref ref="notifyLog"/>
|
||||||
@ -614,11 +434,6 @@
|
|||||||
<appender-ref ref="traceLog"/>
|
<appender-ref ref="traceLog"/>
|
||||||
</logger>
|
</logger>
|
||||||
|
|
||||||
<logger name="com.alibaba.nacos.config.appCollectorLog" additivity="false">
|
|
||||||
<level value="INFO"/>
|
|
||||||
<appender-ref ref="appCollectorLog"/>
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<logger name="com.alibaba.nacos.config.startLog" additivity="false">
|
<logger name="com.alibaba.nacos.config.startLog" additivity="false">
|
||||||
<level value="INFO"/>
|
<level value="INFO"/>
|
||||||
<appender-ref ref="startLog"/>
|
<appender-ref ref="startLog"/>
|
||||||
|
Binary file not shown.
@ -95,15 +95,15 @@ public class ServerListManager {
|
|||||||
Loggers.SRV_LOG.warn("failed to get config: " + CLUSTER_CONF_FILE_PATH, e);
|
Loggers.SRV_LOG.warn("failed to get config: " + CLUSTER_CONF_FILE_PATH, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Loggers.DEBUG_LOG.isDebugEnabled()) {
|
if (Loggers.SRV_LOG.isDebugEnabled()) {
|
||||||
Loggers.DEBUG_LOG.debug("SERVER-LIST from cluster.conf: {}", result);
|
Loggers.SRV_LOG.debug("SERVER-LIST from cluster.conf: {}", result);
|
||||||
}
|
}
|
||||||
|
|
||||||
//use system env
|
//use system env
|
||||||
if (CollectionUtils.isEmpty(serverList)) {
|
if (CollectionUtils.isEmpty(serverList)) {
|
||||||
serverList = SystemUtils.getIPsBySystemEnv(UtilsAndCommons.SELF_SERVICE_CLUSTER_ENV);
|
serverList = SystemUtils.getIPsBySystemEnv(UtilsAndCommons.SELF_SERVICE_CLUSTER_ENV);
|
||||||
if (Loggers.DEBUG_LOG.isDebugEnabled()) {
|
if (Loggers.SRV_LOG.isDebugEnabled()) {
|
||||||
Loggers.DEBUG_LOG.debug("SERVER-LIST from system variable: {}", result);
|
Loggers.SRV_LOG.debug("SERVER-LIST from system variable: {}", result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,8 +75,8 @@ public class DataSyncer {
|
|||||||
String key = iterator.next();
|
String key = iterator.next();
|
||||||
if (StringUtils.isNotBlank(taskMap.putIfAbsent(buildKey(key, task.getTargetServer()), key))) {
|
if (StringUtils.isNotBlank(taskMap.putIfAbsent(buildKey(key, task.getTargetServer()), key))) {
|
||||||
// associated key already exist:
|
// associated key already exist:
|
||||||
if (Loggers.EPHEMERAL.isDebugEnabled()) {
|
if (Loggers.DISTRO.isDebugEnabled()) {
|
||||||
Loggers.EPHEMERAL.debug("sync already in process, key: {}", key);
|
Loggers.DISTRO.debug("sync already in process, key: {}", key);
|
||||||
}
|
}
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
}
|
}
|
||||||
@ -100,8 +100,8 @@ public class DataSyncer {
|
|||||||
|
|
||||||
List<String> keys = task.getKeys();
|
List<String> keys = task.getKeys();
|
||||||
|
|
||||||
if (Loggers.EPHEMERAL.isDebugEnabled()) {
|
if (Loggers.DISTRO.isDebugEnabled()) {
|
||||||
Loggers.EPHEMERAL.debug("sync keys: {}", keys);
|
Loggers.DISTRO.debug("sync keys: {}", keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, Datum> datumMap = dataStore.batchGet(keys);
|
Map<String, Datum> datumMap = dataStore.batchGet(keys);
|
||||||
@ -133,7 +133,7 @@ public class DataSyncer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Loggers.EPHEMERAL.error("sync data failed.", e);
|
Loggers.DISTRO.error("sync data failed.", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, delay);
|
}, delay);
|
||||||
@ -164,8 +164,8 @@ public class DataSyncer {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
if (Loggers.EPHEMERAL.isDebugEnabled()) {
|
if (Loggers.DISTRO.isDebugEnabled()) {
|
||||||
Loggers.EPHEMERAL.debug("server list is: {}", getServers());
|
Loggers.DISTRO.debug("server list is: {}", getServers());
|
||||||
}
|
}
|
||||||
|
|
||||||
// send local timestamps to other servers:
|
// send local timestamps to other servers:
|
||||||
@ -182,8 +182,8 @@ public class DataSyncer {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Loggers.EPHEMERAL.isDebugEnabled()) {
|
if (Loggers.DISTRO.isDebugEnabled()) {
|
||||||
Loggers.EPHEMERAL.debug("sync checksums: {}", keyChecksums);
|
Loggers.DISTRO.debug("sync checksums: {}", keyChecksums);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Server member : getServers()) {
|
for (Server member : getServers()) {
|
||||||
@ -193,7 +193,7 @@ public class DataSyncer {
|
|||||||
NamingProxy.syncCheckSums(keyChecksums, member.getKey());
|
NamingProxy.syncCheckSums(keyChecksums, member.getKey());
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Loggers.EPHEMERAL.error("timed sync task failed.", e);
|
Loggers.DISTRO.error("timed sync task failed.", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -111,7 +111,7 @@ public class DistroConsistencyServiceImpl implements EphemeralConsistencyService
|
|||||||
try {
|
try {
|
||||||
load();
|
load();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Loggers.EPHEMERAL.error("load data failed.", e);
|
Loggers.DISTRO.error("load data failed.", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -127,15 +127,15 @@ public class DistroConsistencyServiceImpl implements EphemeralConsistencyService
|
|||||||
// size = 1 means only myself in the list, we need at least one another server alive:
|
// size = 1 means only myself in the list, we need at least one another server alive:
|
||||||
while (serverListManager.getHealthyServers().size() <= 1) {
|
while (serverListManager.getHealthyServers().size() <= 1) {
|
||||||
Thread.sleep(1000L);
|
Thread.sleep(1000L);
|
||||||
Loggers.EPHEMERAL.info("waiting server list init...");
|
Loggers.DISTRO.info("waiting server list init...");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Server server : serverListManager.getHealthyServers()) {
|
for (Server server : serverListManager.getHealthyServers()) {
|
||||||
if (NetUtils.localServer().equals(server.getKey())) {
|
if (NetUtils.localServer().equals(server.getKey())) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (Loggers.EPHEMERAL.isDebugEnabled()) {
|
if (Loggers.DISTRO.isDebugEnabled()) {
|
||||||
Loggers.EPHEMERAL.debug("sync from " + server);
|
Loggers.DISTRO.debug("sync from " + server);
|
||||||
}
|
}
|
||||||
// try sync data from remote server:
|
// try sync data from remote server:
|
||||||
if (syncAllDataFromRemote(server)) {
|
if (syncAllDataFromRemote(server)) {
|
||||||
@ -194,7 +194,7 @@ public class DistroConsistencyServiceImpl implements EphemeralConsistencyService
|
|||||||
|
|
||||||
if (syncChecksumTasks.containsKey(server)) {
|
if (syncChecksumTasks.containsKey(server)) {
|
||||||
// Already in process of this server:
|
// Already in process of this server:
|
||||||
Loggers.EPHEMERAL.warn("sync checksum task already in process with {}", server);
|
Loggers.DISTRO.warn("sync checksum task already in process with {}", server);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,7 +207,7 @@ public class DistroConsistencyServiceImpl implements EphemeralConsistencyService
|
|||||||
for (Map.Entry<String, String> entry : checksumMap.entrySet()) {
|
for (Map.Entry<String, String> entry : checksumMap.entrySet()) {
|
||||||
if (distroMapper.responsible(KeyBuilder.getServiceName(entry.getKey()))) {
|
if (distroMapper.responsible(KeyBuilder.getServiceName(entry.getKey()))) {
|
||||||
// this key should not be sent from remote server:
|
// this key should not be sent from remote server:
|
||||||
Loggers.EPHEMERAL.error("receive responsible key timestamp of " + entry.getKey() + " from " + server);
|
Loggers.DISTRO.error("receive responsible key timestamp of " + entry.getKey() + " from " + server);
|
||||||
// abort the procedure:
|
// abort the procedure:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -229,7 +229,9 @@ public class DistroConsistencyServiceImpl implements EphemeralConsistencyService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Loggers.EPHEMERAL.info("to remove keys: {}, to update keys: {}, source: {}", toRemoveKeys, toUpdateKeys, server);
|
if (Loggers.DISTRO.isDebugEnabled()) {
|
||||||
|
Loggers.DISTRO.info("to remove keys: {}, to update keys: {}, source: {}", toRemoveKeys, toUpdateKeys, server);
|
||||||
|
}
|
||||||
|
|
||||||
for (String key : toRemoveKeys) {
|
for (String key : toRemoveKeys) {
|
||||||
onRemove(key);
|
onRemove(key);
|
||||||
@ -243,7 +245,7 @@ public class DistroConsistencyServiceImpl implements EphemeralConsistencyService
|
|||||||
byte[] result = NamingProxy.getData(toUpdateKeys, server);
|
byte[] result = NamingProxy.getData(toUpdateKeys, server);
|
||||||
processData(result);
|
processData(result);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Loggers.EPHEMERAL.error("get data from " + server + " failed!", e);
|
Loggers.DISTRO.error("get data from " + server + " failed!", e);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
// Remove this 'in process' flag:
|
// Remove this 'in process' flag:
|
||||||
@ -259,7 +261,7 @@ public class DistroConsistencyServiceImpl implements EphemeralConsistencyService
|
|||||||
processData(data);
|
processData(data);
|
||||||
return true;
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Loggers.EPHEMERAL.error("sync full data from " + server + " failed!", e);
|
Loggers.DISTRO.error("sync full data from " + server + " failed!", e);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -277,7 +279,7 @@ public class DistroConsistencyServiceImpl implements EphemeralConsistencyService
|
|||||||
// pretty sure the service not exist:
|
// pretty sure the service not exist:
|
||||||
if (switchDomain.isDefaultInstanceEphemeral()) {
|
if (switchDomain.isDefaultInstanceEphemeral()) {
|
||||||
// create empty service
|
// create empty service
|
||||||
Loggers.EPHEMERAL.info("creating service {}", entry.getKey());
|
Loggers.DISTRO.info("creating service {}", entry.getKey());
|
||||||
Service service = new Service();
|
Service service = new Service();
|
||||||
String serviceName = KeyBuilder.getServiceName(entry.getKey());
|
String serviceName = KeyBuilder.getServiceName(entry.getKey());
|
||||||
String namespaceId = KeyBuilder.getNamespace(entry.getKey());
|
String namespaceId = KeyBuilder.getNamespace(entry.getKey());
|
||||||
@ -297,7 +299,7 @@ public class DistroConsistencyServiceImpl implements EphemeralConsistencyService
|
|||||||
|
|
||||||
if (!listeners.containsKey(entry.getKey())) {
|
if (!listeners.containsKey(entry.getKey())) {
|
||||||
// Should not happen:
|
// Should not happen:
|
||||||
Loggers.EPHEMERAL.warn("listener of {} not found.", entry.getKey());
|
Loggers.DISTRO.warn("listener of {} not found.", entry.getKey());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -306,7 +308,7 @@ public class DistroConsistencyServiceImpl implements EphemeralConsistencyService
|
|||||||
listener.onChange(entry.getKey(), entry.getValue().value);
|
listener.onChange(entry.getKey(), entry.getValue().value);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Loggers.EPHEMERAL.error("[NACOS-DISTRO] error while execute listener of key: {}", entry.getKey(), e);
|
Loggers.DISTRO.error("[NACOS-DISTRO] error while execute listener of key: {}", entry.getKey(), e);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -374,7 +376,7 @@ public class DistroConsistencyServiceImpl implements EphemeralConsistencyService
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Loggers.EPHEMERAL.info("distro notifier started");
|
Loggers.DISTRO.info("distro notifier started");
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
try {
|
try {
|
||||||
@ -411,16 +413,16 @@ public class DistroConsistencyServiceImpl implements EphemeralConsistencyService
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
Loggers.EPHEMERAL.error("[NACOS-DISTRO] error while notifying listener of key: {}", datumKey, e);
|
Loggers.DISTRO.error("[NACOS-DISTRO] error while notifying listener of key: {}", datumKey, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Loggers.EPHEMERAL.isDebugEnabled()) {
|
if (Loggers.DISTRO.isDebugEnabled()) {
|
||||||
Loggers.EPHEMERAL.debug("[NACOS-DISTRO] datum change notified, key: {}, listener count: {}, action: {}",
|
Loggers.DISTRO.debug("[NACOS-DISTRO] datum change notified, key: {}, listener count: {}, action: {}",
|
||||||
datumKey, count, action.name());
|
datumKey, count, action.name());
|
||||||
}
|
}
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
Loggers.EPHEMERAL.error("[NACOS-DISTRO] Error while handling notifying task", e);
|
Loggers.DISTRO.error("[NACOS-DISTRO] Error while handling notifying task", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -94,8 +94,8 @@ public class TaskDispatcher {
|
|||||||
String key = queue.poll(partitionConfig.getTaskDispatchPeriod(),
|
String key = queue.poll(partitionConfig.getTaskDispatchPeriod(),
|
||||||
TimeUnit.MILLISECONDS);
|
TimeUnit.MILLISECONDS);
|
||||||
|
|
||||||
if (Loggers.EPHEMERAL.isDebugEnabled() && StringUtils.isNotBlank(key)) {
|
if (Loggers.DISTRO.isDebugEnabled() && StringUtils.isNotBlank(key)) {
|
||||||
Loggers.EPHEMERAL.debug("got key: {}", key);
|
Loggers.DISTRO.debug("got key: {}", key);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dataSyncer.getServers() == null || dataSyncer.getServers().isEmpty()) {
|
if (dataSyncer.getServers() == null || dataSyncer.getServers().isEmpty()) {
|
||||||
@ -124,8 +124,8 @@ public class TaskDispatcher {
|
|||||||
syncTask.setKeys(keys);
|
syncTask.setKeys(keys);
|
||||||
syncTask.setTargetServer(member.getKey());
|
syncTask.setTargetServer(member.getKey());
|
||||||
|
|
||||||
if (Loggers.EPHEMERAL.isDebugEnabled() && StringUtils.isNotBlank(key)) {
|
if (Loggers.DISTRO.isDebugEnabled() && StringUtils.isNotBlank(key)) {
|
||||||
Loggers.EPHEMERAL.debug("add sync task: {}", JSON.toJSONString(syncTask));
|
Loggers.DISTRO.debug("add sync task: {}", JSON.toJSONString(syncTask));
|
||||||
}
|
}
|
||||||
|
|
||||||
dataSyncer.submit(syncTask, 0);
|
dataSyncer.submit(syncTask, 0);
|
||||||
@ -135,7 +135,7 @@ public class TaskDispatcher {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Loggers.EPHEMERAL.error("dispatch sync task failed.", e);
|
Loggers.DISTRO.error("dispatch sync task failed.", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -485,7 +485,9 @@ public class RaftCore {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Loggers.RAFT.info("[RAFT] send beat with {} keys.", datums.size());
|
if (Loggers.RAFT.isDebugEnabled()) {
|
||||||
|
Loggers.RAFT.debug("[RAFT] send beat with {} keys.", datums.size());
|
||||||
|
}
|
||||||
|
|
||||||
local.resetLeaderDue();
|
local.resetLeaderDue();
|
||||||
|
|
||||||
@ -513,8 +515,6 @@ public class RaftCore {
|
|||||||
|
|
||||||
array.add(element);
|
array.add(element);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
Loggers.RAFT.info("[RAFT] send beat only.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
packet.put("datums", array);
|
packet.put("datums", array);
|
||||||
@ -531,13 +531,18 @@ public class RaftCore {
|
|||||||
|
|
||||||
byte[] compressedBytes = out.toByteArray();
|
byte[] compressedBytes = out.toByteArray();
|
||||||
String compressedContent = new String(compressedBytes, StandardCharsets.UTF_8);
|
String compressedContent = new String(compressedBytes, StandardCharsets.UTF_8);
|
||||||
Loggers.RAFT.info("raw beat data size: {}, size of compressed data: {}",
|
|
||||||
content.length(), compressedContent.length());
|
if (Loggers.RAFT.isDebugEnabled()) {
|
||||||
|
Loggers.RAFT.debug("raw beat data size: {}, size of compressed data: {}",
|
||||||
|
content.length(), compressedContent.length());
|
||||||
|
}
|
||||||
|
|
||||||
for (final String server : peers.allServersWithoutMySelf()) {
|
for (final String server : peers.allServersWithoutMySelf()) {
|
||||||
try {
|
try {
|
||||||
final String url = buildURL(server, API_BEAT);
|
final String url = buildURL(server, API_BEAT);
|
||||||
Loggers.RAFT.info("send beat to server " + server);
|
if (Loggers.RAFT.isDebugEnabled()) {
|
||||||
|
Loggers.RAFT.debug("send beat to server " + server);
|
||||||
|
}
|
||||||
HttpClient.asyncHttpPostLarge(url, null, compressedBytes, new AsyncCompletionHandler<Integer>() {
|
HttpClient.asyncHttpPostLarge(url, null, compressedBytes, new AsyncCompletionHandler<Integer>() {
|
||||||
@Override
|
@Override
|
||||||
public Integer onCompleted(Response response) throws Exception {
|
public Integer onCompleted(Response response) throws Exception {
|
||||||
@ -549,7 +554,9 @@ public class RaftCore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
peers.update(JSON.parseObject(response.getResponseBody(), RaftPeer.class));
|
peers.update(JSON.parseObject(response.getResponseBody(), RaftPeer.class));
|
||||||
Loggers.RAFT.info("receive beat response from: {}", url);
|
if (Loggers.RAFT.isDebugEnabled()) {
|
||||||
|
Loggers.RAFT.debug("receive beat response from: {}", url);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -615,8 +622,10 @@ public class RaftCore {
|
|||||||
List<String> batch = new ArrayList<>();
|
List<String> batch = new ArrayList<>();
|
||||||
if (!switchDomain.isSendBeatOnly()) {
|
if (!switchDomain.isSendBeatOnly()) {
|
||||||
int processedCount = 0;
|
int processedCount = 0;
|
||||||
Loggers.RAFT.info("[RAFT] received beat with {} keys, RaftCore.datums' size is {}, remote server: {}, term: {}, local term: {}",
|
if (Loggers.RAFT.isDebugEnabled()) {
|
||||||
beatDatums.size(), datums.size(), remote.ip, remote.term, local.term);
|
Loggers.RAFT.debug("[RAFT] received beat with {} keys, RaftCore.datums' size is {}, remote server: {}, term: {}, local term: {}",
|
||||||
|
beatDatums.size(), datums.size(), remote.ip, remote.term, local.term);
|
||||||
|
}
|
||||||
for (Object object : beatDatums) {
|
for (Object object : beatDatums) {
|
||||||
processedCount = processedCount + 1;
|
processedCount = processedCount + 1;
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ public class DistroController {
|
|||||||
String entity = IOUtils.toString(request.getInputStream(), "UTF-8");
|
String entity = IOUtils.toString(request.getInputStream(), "UTF-8");
|
||||||
|
|
||||||
if (StringUtils.isBlank(entity)) {
|
if (StringUtils.isBlank(entity)) {
|
||||||
Loggers.EPHEMERAL.error("[onSync] receive empty entity!");
|
Loggers.DISTRO.error("[onSync] receive empty entity!");
|
||||||
throw new NacosException(NacosException.INVALID_PARAM, "receive empty entity!");
|
throw new NacosException(NacosException.INVALID_PARAM, "receive empty entity!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -234,8 +234,8 @@ public class InstanceController {
|
|||||||
|
|
||||||
String clusterName = clientBeat.getCluster();
|
String clusterName = clientBeat.getCluster();
|
||||||
|
|
||||||
if (Loggers.DEBUG_LOG.isDebugEnabled()) {
|
if (Loggers.SRV_LOG.isDebugEnabled()) {
|
||||||
Loggers.DEBUG_LOG.debug("[CLIENT-BEAT] full arguments: beat: {}, serviceName: {}", clientBeat, serviceName);
|
Loggers.SRV_LOG.debug("[CLIENT-BEAT] full arguments: beat: {}, serviceName: {}", clientBeat, serviceName);
|
||||||
}
|
}
|
||||||
|
|
||||||
Instance instance = serviceManager.getInstance(namespaceId, serviceName, clientBeat.getCluster(), clientBeat.getIp(),
|
Instance instance = serviceManager.getInstance(namespaceId, serviceName, clientBeat.getCluster(), clientBeat.getIp(),
|
||||||
@ -372,8 +372,8 @@ public class InstanceController {
|
|||||||
Service service = serviceManager.getService(namespaceId, serviceName);
|
Service service = serviceManager.getService(namespaceId, serviceName);
|
||||||
|
|
||||||
if (service == null) {
|
if (service == null) {
|
||||||
if (Loggers.DEBUG_LOG.isDebugEnabled()) {
|
if (Loggers.SRV_LOG.isDebugEnabled()) {
|
||||||
Loggers.DEBUG_LOG.debug("no instance to serve for service: " + serviceName);
|
Loggers.SRV_LOG.debug("no instance to serve for service: " + serviceName);
|
||||||
}
|
}
|
||||||
result.put("name", serviceName);
|
result.put("name", serviceName);
|
||||||
result.put("hosts", new JSONArray());
|
result.put("hosts", new JSONArray());
|
||||||
@ -412,8 +412,8 @@ public class InstanceController {
|
|||||||
|
|
||||||
if (CollectionUtils.isEmpty(srvedIPs)) {
|
if (CollectionUtils.isEmpty(srvedIPs)) {
|
||||||
|
|
||||||
if (Loggers.DEBUG_LOG.isDebugEnabled()) {
|
if (Loggers.SRV_LOG.isDebugEnabled()) {
|
||||||
Loggers.DEBUG_LOG.debug("no instance to serve for service: " + serviceName);
|
Loggers.SRV_LOG.debug("no instance to serve for service: " + serviceName);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (clientInfo.type == ClientInfo.ClientType.JAVA &&
|
if (clientInfo.type == ClientInfo.ClientType.JAVA &&
|
||||||
|
@ -29,10 +29,7 @@ import com.alibaba.nacos.naming.consistency.persistent.raft.RaftPeerSet;
|
|||||||
import com.alibaba.nacos.naming.core.DistroMapper;
|
import com.alibaba.nacos.naming.core.DistroMapper;
|
||||||
import com.alibaba.nacos.naming.core.Service;
|
import com.alibaba.nacos.naming.core.Service;
|
||||||
import com.alibaba.nacos.naming.core.ServiceManager;
|
import com.alibaba.nacos.naming.core.ServiceManager;
|
||||||
import com.alibaba.nacos.naming.misc.SwitchDomain;
|
import com.alibaba.nacos.naming.misc.*;
|
||||||
import com.alibaba.nacos.naming.misc.SwitchEntry;
|
|
||||||
import com.alibaba.nacos.naming.misc.SwitchManager;
|
|
||||||
import com.alibaba.nacos.naming.misc.UtilsAndCommons;
|
|
||||||
import com.alibaba.nacos.naming.pojo.ClusterStateView;
|
import com.alibaba.nacos.naming.pojo.ClusterStateView;
|
||||||
import com.alibaba.nacos.naming.push.PushService;
|
import com.alibaba.nacos.naming.push.PushService;
|
||||||
import com.alibaba.nacos.naming.web.NeedAuth;
|
import com.alibaba.nacos.naming.web.NeedAuth;
|
||||||
@ -55,7 +52,7 @@ import java.util.List;
|
|||||||
* @author nkorange
|
* @author nkorange
|
||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping(UtilsAndCommons.NACOS_NAMING_CONTEXT + "/operator")
|
@RequestMapping({UtilsAndCommons.NACOS_NAMING_CONTEXT + "/operator", UtilsAndCommons.NACOS_NAMING_CONTEXT + "/ops"})
|
||||||
public class OperatorController {
|
public class OperatorController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@ -224,6 +221,14 @@ public class OperatorController {
|
|||||||
return "ok";
|
return "ok";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/log", method = RequestMethod.PUT)
|
||||||
|
public String setLogLevel(HttpServletRequest request) {
|
||||||
|
String logName = WebUtils.required(request, "logName");
|
||||||
|
String logLevel = WebUtils.required(request, "logLevel");
|
||||||
|
Loggers.setLogLevel(logName, logLevel);
|
||||||
|
return "ok";
|
||||||
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "/cluster/states", method = RequestMethod.GET)
|
@RequestMapping(value = "/cluster/states", method = RequestMethod.GET)
|
||||||
public Object listStates(HttpServletRequest request) {
|
public Object listStates(HttpServletRequest request) {
|
||||||
|
|
||||||
|
@ -282,27 +282,35 @@ public class ServiceManager implements RecordListener<Service> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean changed = false;
|
||||||
|
|
||||||
List<Instance> instances = service.allIPs();
|
List<Instance> instances = service.allIPs();
|
||||||
for (Instance instance : instances) {
|
for (Instance instance : instances) {
|
||||||
|
|
||||||
Boolean valid = Boolean.parseBoolean(ipsMap.get(instance.toIPAddr()));
|
boolean valid = Boolean.parseBoolean(ipsMap.get(instance.toIPAddr()));
|
||||||
if (valid != instance.isHealthy()) {
|
if (valid != instance.isHealthy()) {
|
||||||
|
changed = true;
|
||||||
instance.setHealthy(valid);
|
instance.setHealthy(valid);
|
||||||
Loggers.EVT_LOG.info("{} {SYNC} IP-{} : {}@{}",
|
Loggers.EVT_LOG.info("{} {SYNC} IP-{} : {}@{}{}",
|
||||||
serviceName, (instance.isHealthy() ? "ENABLED" : "DISABLED"),
|
serviceName, (instance.isHealthy() ? "ENABLED" : "DISABLED"),
|
||||||
instance.getIp(), instance.getPort(), instance.getClusterName());
|
instance.getIp(), instance.getPort(), instance.getClusterName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pushService.serviceChanged(service);
|
if (changed) {
|
||||||
|
pushService.serviceChanged(service);
|
||||||
|
}
|
||||||
|
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
List<Instance> allIps = service.allIPs();
|
List<Instance> allIps = service.allIPs();
|
||||||
for (Instance instance : allIps) {
|
for (Instance instance : allIps) {
|
||||||
stringBuilder.append(instance.toIPAddr()).append("_").append(instance.isHealthy()).append(",");
|
stringBuilder.append(instance.toIPAddr()).append("_").append(instance.isHealthy()).append(",");
|
||||||
}
|
}
|
||||||
|
|
||||||
Loggers.EVT_LOG.info("[IP-UPDATED] namespace: {}, service: {}, ips: {}",
|
if (changed && Loggers.EVT_LOG.isDebugEnabled()) {
|
||||||
service.getNamespaceId(), service.getName(), stringBuilder.toString());
|
Loggers.EVT_LOG.debug("[HEALTH-STATUS-UPDATED] namespace: {}, service: {}, ips: {}",
|
||||||
|
service.getNamespaceId(), service.getName(), stringBuilder.toString());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,8 +88,8 @@ public class HealthCheckCommon {
|
|||||||
}
|
}
|
||||||
Map<String, String> params = new HashMap<>(10);
|
Map<String, String> params = new HashMap<>(10);
|
||||||
params.put("result", JSON.toJSONString(list));
|
params.put("result", JSON.toJSONString(list));
|
||||||
if (Loggers.DEBUG_LOG.isDebugEnabled()) {
|
if (Loggers.SRV_LOG.isDebugEnabled()) {
|
||||||
Loggers.DEBUG_LOG.debug("[HEALTH-SYNC] server: {}, healthCheckResults: {}",
|
Loggers.SRV_LOG.debug("[HEALTH-SYNC] server: {}, healthCheckResults: {}",
|
||||||
server, JSON.toJSONString(list));
|
server, JSON.toJSONString(list));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,10 +94,13 @@ public class HealthCheckTask implements Runnable {
|
|||||||
this.setCheckRTLastLast(this.getCheckRTLast());
|
this.setCheckRTLastLast(this.getCheckRTLast());
|
||||||
|
|
||||||
Cluster cluster = this.getCluster();
|
Cluster cluster = this.getCluster();
|
||||||
Loggers.CHECK_RT.info("{}:{}@{}->normalized: {}, worst: {}, best: {}, last: {}, diff: {}",
|
|
||||||
cluster.getService().getName(), cluster.getName(), cluster.getHealthChecker().getType(),
|
if (Loggers.CHECK_RT.isDebugEnabled()) {
|
||||||
this.getCheckRTNormalized(), this.getCheckRTWorst(), this.getCheckRTBest(),
|
Loggers.CHECK_RT.debug("{}:{}@{}->normalized: {}, worst: {}, best: {}, last: {}, diff: {}",
|
||||||
this.getCheckRTLast(), diff);
|
cluster.getService().getName(), cluster.getName(), cluster.getHealthChecker().getType(),
|
||||||
|
this.getCheckRTNormalized(), this.getCheckRTWorst(), this.getCheckRTBest(),
|
||||||
|
this.getCheckRTLast(), diff);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.alibaba.nacos.naming.misc;
|
package com.alibaba.nacos.naming.misc;
|
||||||
|
|
||||||
|
import ch.qos.logback.classic.Level;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -33,9 +34,37 @@ public class Loggers {
|
|||||||
|
|
||||||
public static final Logger RAFT = LoggerFactory.getLogger("com.alibaba.nacos.naming.raft");
|
public static final Logger RAFT = LoggerFactory.getLogger("com.alibaba.nacos.naming.raft");
|
||||||
|
|
||||||
public static final Logger EPHEMERAL = LoggerFactory.getLogger("com.alibaba.nacos.naming.ephemeral");
|
public static final Logger DISTRO = LoggerFactory.getLogger("com.alibaba.nacos.naming.distro");
|
||||||
|
|
||||||
public static final Logger PERFORMANCE_LOG = LoggerFactory.getLogger("com.alibaba.nacos.naming.performance");
|
public static final Logger PERFORMANCE_LOG = LoggerFactory.getLogger("com.alibaba.nacos.naming.performance");
|
||||||
|
|
||||||
public static final Logger DEBUG_LOG = LoggerFactory.getLogger("com.alibaba.nacos.naming.debug");
|
public static void setLogLevel(String logName, String level) {
|
||||||
|
|
||||||
|
switch (logName) {
|
||||||
|
case "naming-push":
|
||||||
|
((ch.qos.logback.classic.Logger) PUSH).setLevel(Level.valueOf(level));
|
||||||
|
break;
|
||||||
|
case "naming-rt":
|
||||||
|
((ch.qos.logback.classic.Logger) CHECK_RT).setLevel(Level.valueOf(level));
|
||||||
|
break;
|
||||||
|
case "naming-server":
|
||||||
|
((ch.qos.logback.classic.Logger) SRV_LOG).setLevel(Level.valueOf(level));
|
||||||
|
break;
|
||||||
|
case "naming-event":
|
||||||
|
((ch.qos.logback.classic.Logger) EVT_LOG).setLevel(Level.valueOf(level));
|
||||||
|
break;
|
||||||
|
case "naming-raft":
|
||||||
|
((ch.qos.logback.classic.Logger) RAFT).setLevel(Level.valueOf(level));
|
||||||
|
break;
|
||||||
|
case "naming-distro":
|
||||||
|
((ch.qos.logback.classic.Logger) DISTRO).setLevel(Level.valueOf(level));
|
||||||
|
break;
|
||||||
|
case "naming-performance":
|
||||||
|
((ch.qos.logback.classic.Logger) PERFORMANCE_LOG).setLevel(Level.valueOf(level));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,7 @@ public class NamingProxy {
|
|||||||
@Override
|
@Override
|
||||||
public Object onCompleted(Response response) throws Exception {
|
public Object onCompleted(Response response) throws Exception {
|
||||||
if (HttpURLConnection.HTTP_OK != response.getStatusCode()) {
|
if (HttpURLConnection.HTTP_OK != response.getStatusCode()) {
|
||||||
Loggers.EPHEMERAL.error("failed to req API: {}, code: {}, msg: {}",
|
Loggers.DISTRO.error("failed to req API: {}, code: {}, msg: {}",
|
||||||
"http://" + server + RunningConfig.getContextPath() +
|
"http://" + server + RunningConfig.getContextPath() +
|
||||||
UtilsAndCommons.NACOS_NAMING_CONTEXT + TIMESTAMP_SYNC_URL,
|
UtilsAndCommons.NACOS_NAMING_CONTEXT + TIMESTAMP_SYNC_URL,
|
||||||
response.getStatusCode(), response.getResponseBody());
|
response.getStatusCode(), response.getResponseBody());
|
||||||
@ -64,13 +64,13 @@ public class NamingProxy {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onThrowable(Throwable t) {
|
public void onThrowable(Throwable t) {
|
||||||
Loggers.EPHEMERAL.error("failed to req API:" + "http://" + server
|
Loggers.DISTRO.error("failed to req API:" + "http://" + server
|
||||||
+ RunningConfig.getContextPath()
|
+ RunningConfig.getContextPath()
|
||||||
+ UtilsAndCommons.NACOS_NAMING_CONTEXT + TIMESTAMP_SYNC_URL, t);
|
+ UtilsAndCommons.NACOS_NAMING_CONTEXT + TIMESTAMP_SYNC_URL, t);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Loggers.EPHEMERAL.warn("NamingProxy", e);
|
Loggers.DISTRO.warn("NamingProxy", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,7 +79,9 @@ public class ServiceStatusSynchronizer implements Synchronizer {
|
|||||||
|
|
||||||
String result;
|
String result;
|
||||||
try {
|
try {
|
||||||
Loggers.SRV_LOG.info("[STATUS-SYNCHRONIZE] sync service status from: {}, service: {}", serverIP, key);
|
if (Loggers.SRV_LOG.isDebugEnabled()) {
|
||||||
|
Loggers.SRV_LOG.debug("[STATUS-SYNCHRONIZE] sync service status from: {}, service: {}", serverIP, key);
|
||||||
|
}
|
||||||
result = NamingProxy.reqAPI(RunningConfig.getContextPath()
|
result = NamingProxy.reqAPI(RunningConfig.getContextPath()
|
||||||
+ UtilsAndCommons.NACOS_NAMING_CONTEXT + "/instance/" + "statuses", params, serverIP);
|
+ UtilsAndCommons.NACOS_NAMING_CONTEXT + "/instance/" + "statuses", params, serverIP);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -19,7 +19,6 @@ import com.alibaba.nacos.naming.consistency.persistent.raft.RaftCore;
|
|||||||
import com.alibaba.nacos.naming.consistency.persistent.raft.RaftPeer;
|
import com.alibaba.nacos.naming.consistency.persistent.raft.RaftPeer;
|
||||||
import com.alibaba.nacos.naming.core.ServiceManager;
|
import com.alibaba.nacos.naming.core.ServiceManager;
|
||||||
import com.alibaba.nacos.naming.misc.Loggers;
|
import com.alibaba.nacos.naming.misc.Loggers;
|
||||||
import com.alibaba.nacos.naming.misc.SwitchDomain;
|
|
||||||
import com.alibaba.nacos.naming.push.PushService;
|
import com.alibaba.nacos.naming.push.PushService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
@ -42,9 +41,6 @@ public class PerformanceLoggerThread {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ServiceManager serviceManager;
|
private ServiceManager serviceManager;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private SwitchDomain switchDomain;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private PushService pushService;
|
private PushService pushService;
|
||||||
|
|
||||||
@ -62,34 +58,15 @@ public class PerformanceLoggerThread {
|
|||||||
});
|
});
|
||||||
|
|
||||||
private static final long PERIOD = 5 * 60;
|
private static final long PERIOD = 5 * 60;
|
||||||
private static final long HEALTH_CHECK_PERIOD = 5 * 60;
|
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void init() {
|
public void init() {
|
||||||
start();
|
start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void freshHealthCheckSwitch() {
|
|
||||||
Loggers.SRV_LOG.info("[HEALTH-CHECK] health check is {}", switchDomain.isHealthCheckEnabled());
|
|
||||||
}
|
|
||||||
|
|
||||||
class HealthCheckSwitchTask implements Runnable {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
try {
|
|
||||||
freshHealthCheckSwitch();
|
|
||||||
} catch (Exception ignore) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void start() {
|
private void start() {
|
||||||
PerformanceLogTask task = new PerformanceLogTask();
|
PerformanceLogTask task = new PerformanceLogTask();
|
||||||
executor.scheduleWithFixedDelay(task, 30, PERIOD, TimeUnit.SECONDS);
|
executor.scheduleWithFixedDelay(task, 30, PERIOD, TimeUnit.SECONDS);
|
||||||
executor.scheduleWithFixedDelay(new HealthCheckSwitchTask(), 30, HEALTH_CHECK_PERIOD, TimeUnit.SECONDS);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Scheduled(cron = "0 0 0 * * ?")
|
@Scheduled(cron = "0 0 0 * * ?")
|
||||||
|
@ -275,7 +275,9 @@ public class PushService implements ApplicationContextAware, ApplicationListener
|
|||||||
size += clientConcurrentMap.size();
|
size += clientConcurrentMap.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
Loggers.PUSH.info("[NACOS-PUSH] clientMap size: {}", size);
|
if (Loggers.PUSH.isDebugEnabled()) {
|
||||||
|
Loggers.PUSH.debug("[NACOS-PUSH] clientMap size: {}", size);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user