Signed-off-by: Eric Zhao <sczyh16@gmail.com>master
@@ -35,7 +35,8 @@ import static com.alibaba.csp.sentinel.util.ConfigUtil.addSeparator; | |||||
*/ | */ | ||||
public final class SentinelConfigLoader { | public final class SentinelConfigLoader { | ||||
public static final String SENTINEL_CONFIG = "csp.sentinel.config.file"; | |||||
public static final String SENTINEL_CONFIG_ENV_KEY = "CSP_SENTINEL_CONFIG_FILE"; | |||||
public static final String SENTINEL_CONFIG_PROPERTY_KEY = "csp.sentinel.config.file"; | |||||
private static final String DIR_NAME = "logs" + File.separator + "csp"; | private static final String DIR_NAME = "logs" + File.separator + "csp"; | ||||
private static final String USER_HOME = "user.home"; | private static final String USER_HOME = "user.home"; | ||||
@@ -45,13 +46,21 @@ public final class SentinelConfigLoader { | |||||
private static Properties properties = new Properties(); | private static Properties properties = new Properties(); | ||||
static { | static { | ||||
load(); | |||||
try { | |||||
load(); | |||||
} catch (Throwable t) { | |||||
RecordLog.warn("[SentinelConfigLoader] Failed to initialize configuration items", t); | |||||
} | |||||
} | } | ||||
private static void load() { | private static void load() { | ||||
String fileName = System.getProperty(SENTINEL_CONFIG); | |||||
// Order: system property -> system env -> default file (classpath:sentinel.properties) -> legacy path | |||||
String fileName = System.getProperty(SENTINEL_CONFIG_PROPERTY_KEY); | |||||
if (StringUtil.isBlank(fileName)) { | if (StringUtil.isBlank(fileName)) { | ||||
fileName = DEFAULT_SENTINEL_CONFIG_FILE; | |||||
fileName = System.getenv(SENTINEL_CONFIG_ENV_KEY); | |||||
if (StringUtil.isBlank(fileName)) { | |||||
fileName = DEFAULT_SENTINEL_CONFIG_FILE; | |||||
} | |||||
} | } | ||||
Properties p = ConfigUtil.loadProperties(fileName); | Properties p = ConfigUtil.loadProperties(fileName); | ||||
@@ -88,5 +97,4 @@ public final class SentinelConfigLoader { | |||||
return properties; | return properties; | ||||
} | } | ||||
} | } |
@@ -30,23 +30,34 @@ import java.util.concurrent.CopyOnWriteArraySet; | |||||
*/ | */ | ||||
public class LogConfigLoader { | public class LogConfigLoader { | ||||
public static final String LOG_CONFIG = "csp.sentinel.config.file"; | |||||
public static final String LOG_CONFIG_ENV_KEY = "CSP_SENTINEL_CONFIG_FILE"; | |||||
public static final String LOG_CONFIG_PROPERTY_KEY = "csp.sentinel.config.file"; | |||||
private static final String DEFAULT_LOG_CONFIG_FILE = "classpath:sentinel.properties"; | private static final String DEFAULT_LOG_CONFIG_FILE = "classpath:sentinel.properties"; | ||||
private static final Properties properties = new Properties(); | private static final Properties properties = new Properties(); | ||||
static { | static { | ||||
load(); | |||||
try { | |||||
load(); | |||||
} catch (Throwable t) { | |||||
// NOTE: do not use RecordLog here, or there will be circular class dependency! | |||||
System.err.println("[LogConfigLoader] Failed to initialize configuration items"); | |||||
t.printStackTrace(); | |||||
} | |||||
} | } | ||||
private static void load() { | private static void load() { | ||||
String file = System.getProperty(LOG_CONFIG); | |||||
if (StringUtil.isBlank(file)) { | |||||
file = DEFAULT_LOG_CONFIG_FILE; | |||||
// Order: system property -> system env -> default file (classpath:sentinel.properties) -> legacy path | |||||
String fileName = System.getProperty(LOG_CONFIG_PROPERTY_KEY); | |||||
if (StringUtil.isBlank(fileName)) { | |||||
fileName = System.getenv(LOG_CONFIG_ENV_KEY); | |||||
if (StringUtil.isBlank(fileName)) { | |||||
fileName = DEFAULT_LOG_CONFIG_FILE; | |||||
} | |||||
} | } | ||||
Properties p = ConfigUtil.loadProperties(file); | |||||
Properties p = ConfigUtil.loadProperties(fileName); | |||||
if (p != null && !p.isEmpty()) { | if (p != null && !p.isEmpty()) { | ||||
properties.putAll(p); | properties.putAll(p); | ||||
} | } | ||||