Change plugin config file format
Instead of the Git config style, use the standard log4j properties
format. Discussed in [1].
The format requires less boilerplate text. Instead of:
[WARN]
name = com.google.gerrit
[DEBUG]
name = org.eclipse.jgit
we need now only:
com.google.gerrit=WARN
org.eclipse.jgit=DEBUG
[1] https://groups.google.com/d/msg/repo-discuss/Ci-_uF3Vqfk/vadX6scUFQAJ
Change-Id: I648d69d2bd8c4bd956d99c4b0d321e3cd98a3d64
diff --git a/src/main/java/com/googlesource/gerrit/plugins/loglevel/LogLevel.java b/src/main/java/com/googlesource/gerrit/plugins/loglevel/LogLevel.java
index 85363fb..fa7592c 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/loglevel/LogLevel.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/loglevel/LogLevel.java
@@ -15,30 +15,42 @@
import com.google.gerrit.extensions.annotations.PluginName;
import com.google.gerrit.extensions.events.LifecycleListener;
-import com.google.gerrit.server.config.PluginConfigFactory;
+import com.google.gerrit.server.config.SitePaths;
import com.google.inject.Inject;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.NoSuchFileException;
+import java.nio.file.Path;
+import java.util.Properties;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
-import org.eclipse.jgit.lib.Config;
public class LogLevel implements LifecycleListener {
private static final Logger log = Logger.getLogger(LogLevel.class);
- @Inject private PluginConfigFactory configFactory;
+ @Inject private SitePaths sitePaths;
@Inject private @PluginName String pluginName;
@Override
public void start() {
log.info("Plug-in started");
- Config config = configFactory.getGlobalPluginConfig(pluginName);
- for (String cfgLevel : config.getSections()) {
- String[] names = config.getStringList(cfgLevel, null, "name");
- for (String name : names) {
- Logger logger = Logger.getLogger(name);
- Level level = Level.toLevel(cfgLevel, Level.INFO);
- logger.setLevel(level);
- log.info("[" + level.toString() + "] " + name);
- }
+ Properties config = new Properties();
+ Path pluginConfig = sitePaths.etc_dir.resolve(pluginName + ".properties");
+ try (InputStream in = Files.newInputStream(pluginConfig)) {
+ config.load(in);
+ } catch (NoSuchFileException e) {
+ log.warn("Configuration file " + pluginConfig + " not found");
+ } catch (IOException e) {
+ log.error("Error loading config file " + pluginConfig, e);
+ }
+
+ for (String name : config.stringPropertyNames()) {
+ String cfgLevel = config.getProperty(name);
+ Logger logger = Logger.getLogger(name);
+ Level level = Level.toLevel(cfgLevel, Level.INFO);
+ logger.setLevel(level);
+ log.info(name + "=" + level.toString());
}
}
diff --git a/src/main/resources/Documentation/log-level.md b/src/main/resources/Documentation/log-level.md
index 639a2d4..2a99c17 100644
--- a/src/main/resources/Documentation/log-level.md
+++ b/src/main/resources/Documentation/log-level.md
@@ -7,15 +7,12 @@
SYNOPSIS
--------
-@PLUGIN@.config:
+@PLUGIN@.properties:
```
-[FATAL]
- name = com.google.gerrit.server.change.EmailReviewComments
-
-[WARN]
- name = org.eclipse.jetty.server.session
- name = com.google.gerrit.server.plugins
+com.google.gerrit.server.change.EmailReviewComments=FATAL
+org.eclipse.jetty.server.session=WARN
+com.google.gerrit.server.plugins=WARN
```
DESCRIPTION