diff --git a/ma1sd.example.yaml b/ma1sd.example.yaml index 7acf4d0..9b27e25 100644 --- a/ma1sd.example.yaml +++ b/ma1sd.example.yaml @@ -130,6 +130,7 @@ threepid: # synapseSql: # lookup: # query: 'select user_id as mxid, medium, address from user_threepids' # query for retrive 3PIDs for hashes. +# legacyRoomNames: false # use the old query to get room names. ### hash lookup for ldap provider (with example of the ldap configuration) # ldap: @@ -167,3 +168,6 @@ threepid: # - '/_matrix/identity/v2/hash_details' # - '/_matrix/identity/v2/lookup' # + +# logging: +# root: trace # logging level diff --git a/src/main/java/io/kamax/mxisd/MxisdStandaloneExec.java b/src/main/java/io/kamax/mxisd/MxisdStandaloneExec.java index 3e42c2e..9cd7dc9 100644 --- a/src/main/java/io/kamax/mxisd/MxisdStandaloneExec.java +++ b/src/main/java/io/kamax/mxisd/MxisdStandaloneExec.java @@ -44,31 +44,42 @@ public class MxisdStandaloneExec { try { MxisdConfig cfg = null; Iterator argsIt = Arrays.asList(args).iterator(); + boolean dump = false; while (argsIt.hasNext()) { String arg = argsIt.next(); - if (StringUtils.equalsAny(arg, "-h", "--help", "-?", "--usage")) { - System.out.println("Available arguments:" + System.lineSeparator()); - System.out.println(" -h, --help Show this help message"); - System.out.println(" --version Print the version then exit"); - System.out.println(" -c, --config Set the configuration file location"); - System.out.println(" -v Increase log level (log more info)"); - System.out.println(" -vv Further increase log level"); - System.out.println(" "); - System.exit(0); - } else if (StringUtils.equals(arg, "-v")) { - System.setProperty("org.slf4j.simpleLogger.log.io.kamax.mxisd", "debug"); - } else if (StringUtils.equals(arg, "-vv")) { - System.setProperty("org.slf4j.simpleLogger.log.io.kamax.mxisd", "trace"); - } else if (StringUtils.equalsAny(arg, "-c", "--config")) { - String cfgFile = argsIt.next(); - cfg = YamlConfigLoader.loadFromFile(cfgFile); - } else if (StringUtils.equals("--version", arg)) { - System.out.println(Mxisd.Version); - System.exit(0); - } else { - System.err.println("Invalid argument: " + arg); - System.err.println("Try '--help' for available arguments"); - System.exit(1); + switch (arg) { + case "-h": + case "--help": + case "-?": + case "--usage": + System.out.println("Available arguments:" + System.lineSeparator()); + System.out.println(" -h, --help Show this help message"); + System.out.println(" --version Print the version then exit"); + System.out.println(" -c, --config Set the configuration file location"); + System.out.println(" -v Increase log level (log more info)"); + System.out.println(" -vv Further increase log level"); + System.out.println(" --dump Dump the full ma1sd configuration"); + System.out.println(" "); + System.exit(0); + return; + case "-v": + System.setProperty("org.slf4j.simpleLogger.log.io.kamax.mxisd", "debug"); + break; + case "-vv": + System.setProperty("org.slf4j.simpleLogger.log.io.kamax.mxisd", "trace"); + break; + case "-c": + case "--config": + String cfgFile = argsIt.next(); + cfg = YamlConfigLoader.loadFromFile(cfgFile); + break; + case "--dump": + dump = true; + break; + default: + System.err.println("Invalid argument: " + arg); + System.err.println("Try '--help' for available arguments"); + System.exit(1); } } @@ -76,6 +87,11 @@ public class MxisdStandaloneExec { cfg = YamlConfigLoader.tryLoadFromFile("ma1sd.yaml").orElseGet(MxisdConfig::new); } + if (dump) { + YamlConfigLoader.dumpConfig(cfg); + System.exit(0); + } + log.info("ma1sd starting"); log.info("Version: {}", Mxisd.Version); diff --git a/src/main/java/io/kamax/mxisd/config/LoggingConfig.java b/src/main/java/io/kamax/mxisd/config/LoggingConfig.java new file mode 100644 index 0000000..281547a --- /dev/null +++ b/src/main/java/io/kamax/mxisd/config/LoggingConfig.java @@ -0,0 +1,33 @@ +package io.kamax.mxisd.config; + +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class LoggingConfig { + + private static final Logger LOGGER = LoggerFactory.getLogger(LoggingConfig.class); + + private String root; + + public String getRoot() { + return root; + } + + public void setRoot(String root) { + this.root = root; + } + + public void build() { + String systemLevel = System.getProperty("org.slf4j.simpleLogger.log.io.kamax.mxisd"); + LOGGER.info("Logging config:"); + if (StringUtils.isNotBlank(systemLevel)) { + LOGGER.info(" Logging level set by environment: {}", systemLevel); + } else if (StringUtils.isNotBlank(getRoot())) { + LOGGER.info(" Logging level set by the configuration: {}", getRoot()); + System.setProperty("org.slf4j.simpleLogger.log.io.kamax.mxisd", getRoot()); + } else { + LOGGER.info(" Logging level hasn't set, use default"); + } + } +} diff --git a/src/main/java/io/kamax/mxisd/config/MxisdConfig.java b/src/main/java/io/kamax/mxisd/config/MxisdConfig.java index a7f8a45..6714a84 100644 --- a/src/main/java/io/kamax/mxisd/config/MxisdConfig.java +++ b/src/main/java/io/kamax/mxisd/config/MxisdConfig.java @@ -117,6 +117,7 @@ public class MxisdConfig { private WordpressConfig wordpress = new WordpressConfig(); private PolicyConfig policy = new PolicyConfig(); private HashingConfig hashing = new HashingConfig(); + private LoggingConfig logging = new LoggingConfig(); public AppServiceConfig getAppsvc() { return appsvc; @@ -342,6 +343,14 @@ public class MxisdConfig { this.hashing = hashing; } + public LoggingConfig getLogging() { + return logging; + } + + public void setLogging(LoggingConfig logging) { + this.logging = logging; + } + public MxisdConfig inMemory() { getKey().setPath(":memory:"); getStorage().getProvider().getSqlite().setDatabase(":memory:"); @@ -350,6 +359,8 @@ public class MxisdConfig { } public MxisdConfig build() { + getLogging().build(); + if (StringUtils.isBlank(getServer().getName())) { getServer().setName(getMatrix().getDomain()); log.debug("server.name is empty, using matrix.domain"); diff --git a/src/main/java/io/kamax/mxisd/config/YamlConfigLoader.java b/src/main/java/io/kamax/mxisd/config/YamlConfigLoader.java index 407ecef..7f4a211 100644 --- a/src/main/java/io/kamax/mxisd/config/YamlConfigLoader.java +++ b/src/main/java/io/kamax/mxisd/config/YamlConfigLoader.java @@ -76,4 +76,14 @@ public class YamlConfigLoader { } } + public static void dumpConfig(MxisdConfig cfg) { + Representer rep = new Representer(); + rep.getPropertyUtils().setBeanAccess(BeanAccess.FIELD); + rep.getPropertyUtils().setAllowReadOnlyProperties(true); + rep.getPropertyUtils().setSkipMissingProperties(true); + + Yaml yaml = new Yaml(new Constructor(MxisdConfig.class), rep); + String dump = yaml.dump(cfg); + log.info("Full configuration:\n{}", dump); + } }