Repository: logging-log4j2
Updated Branches:
  refs/heads/LOG4J2-1136 b4813ef82 -> 49342732e


Improve error message


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/49342732
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/49342732
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/49342732

Branch: refs/heads/LOG4J2-1136
Commit: 49342732ed3608b6c0755f9ea2cf0ef08afe090a
Parents: b4813ef
Author: Ralph Goers <[email protected]>
Authored: Sun Sep 27 11:59:56 2015 -0700
Committer: Ralph Goers <[email protected]>
Committed: Sun Sep 27 11:59:56 2015 -0700

----------------------------------------------------------------------
 .../log4j/core/script/ScriptManager.java        | 29 ++++++++++++++++----
 1 file changed, 23 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/49342732/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptManager.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptManager.java
index 6ec707c..27ff107 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptManager.java
@@ -17,7 +17,6 @@
 package org.apache.logging.log4j.core.script;
 
 import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.config.ConfigurationException;
 import org.apache.logging.log4j.status.StatusLogger;
 
 import javax.script.Bindings;
@@ -39,10 +38,12 @@ public class ScriptManager {
     private static final Logger logger = StatusLogger.getLogger();
     private final ScriptEngineManager manager = new ScriptEngineManager();
     private final ConcurrentMap<String, ScriptRunner> scripts = new 
ConcurrentHashMap<>();
+    private final String languages;
 
     public ScriptManager() {
+        List<ScriptEngineFactory> factories = manager.getEngineFactories();
         if (logger.isDebugEnabled()) {
-            List<ScriptEngineFactory> factories = manager.getEngineFactories();
+            StringBuilder sb = new StringBuilder();
             logger.debug("Installed script engines");
             for (ScriptEngineFactory factory : factories) {
                 String threading = (String) factory.getParameter("THREADING");
@@ -50,26 +51,42 @@ public class ScriptManager {
                     threading = "Not Thread Safe";
                 }
                 StringBuilder names = new StringBuilder();
-                boolean first = true;
                 for (String name : factory.getNames()) {
-                    if (!first) {
+                    if (names.length() > 0) {
                         names.append(", ");
                     }
                     names.append(name);
-                    first = false;
                 }
+                if (sb.length() > 0) {
+                    sb.append(", ");
+                }
+                sb.append(names);
                 boolean compiled = factory.getScriptEngine() instanceof 
Compilable;
                 logger.debug(factory.getEngineName() + " Version: " + 
factory.getEngineVersion() +
                     ", Language: " + factory.getLanguageName() + ", Threading: 
" + threading +
                     ", Compile: " + compiled + ", Names: {" + names.toString() 
+ "}");
             }
+            languages = sb.toString();
+        } else {
+            StringBuilder names = new StringBuilder();
+            for (ScriptEngineFactory factory : factories) {
+                for (String name : factory.getNames()) {
+                    if (names.length() > 0) {
+                        names.append(", ");
+                    }
+                    names.append(name);
+                }
+            }
+            languages = names.toString();
         }
     }
 
     public void addScript(Script script) {
         ScriptEngine engine = manager.getEngineByName(script.getLanguage());
         if (engine == null) {
-            logger.error("No ScriptEngine found for language " + 
script.getLanguage());
+            logger.error("No ScriptEngine found for language " + 
script.getLanguage() + ". Available languages are: " +
+                languages);
+            return;
         }
         if (engine.getFactory().getParameter("THREADING") == null) {
             scripts.put(script.getName(), new ThreadLocalScriptRunner(script));

Reply via email to