You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@velocity.apache.org by he...@apache.org on 2006/10/12 00:06:57 UTC

svn commit: r462992 - /jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/log/AvalonLogChute.java

Author: henning
Date: Wed Oct 11 15:06:56 2006
New Revision: 462992

URL: http://svn.apache.org/viewvc?view=rev&rev=462992
Log:
add the ability to configure level and format of the Avalon log file
through properties.

Modified:
    jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/log/AvalonLogChute.java

Modified: jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/log/AvalonLogChute.java
URL: http://svn.apache.org/viewvc/jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/log/AvalonLogChute.java?view=diff&rev=462992&r1=462991&r2=462992
==============================================================================
--- jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/log/AvalonLogChute.java (original)
+++ jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/log/AvalonLogChute.java Wed Oct 11 15:06:56 2006
@@ -18,13 +18,17 @@
 
 import java.io.File;
 import java.io.IOException;
-import org.apache.log.Priority;
-import org.apache.log.Logger;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
 import org.apache.log.Hierarchy;
 import org.apache.log.LogTarget;
+import org.apache.log.Logger;
+import org.apache.log.Priority;
 import org.apache.log.output.io.FileTarget;
-import org.apache.velocity.runtime.RuntimeServices;
 import org.apache.velocity.runtime.RuntimeConstants;
+import org.apache.velocity.runtime.RuntimeServices;
 
 /**
  * Implementation of a Avalon logger.
@@ -36,8 +40,25 @@
  */
 public class AvalonLogChute implements LogChute
 {
+    public static final String AVALON_LOGGER = "runtime.log.logsystem.avalon.logger";
+ 
+    public static final String AVALON_LOGGER_FORMAT = "runtime.log.logsystem.avalon.format";
+    
+    public static final String AVALON_LOGGER_LEVEL = "runtime.log.logsystem.avalon.level";
+
     private Logger logger = null;
     private RuntimeServices rsvc = null;
+    
+    private static final Map logLevels = new HashMap();
+    
+    static
+    {
+        logLevels.put("trace", Priority.DEBUG);
+        logLevels.put("debug", Priority.DEBUG);
+        logLevels.put("info", Priority.INFO);
+        logLevels.put("warn", Priority.WARN);
+        logLevels.put("error", Priority.ERROR);
+    }
 
     /**
      * @see org.apache.velocity.runtime.log.LogChute#init(org.apache.velocity.runtime.RuntimeServices)
@@ -47,7 +68,7 @@
         this.rsvc = rs;
 
         // if a logger is specified, we will use this instead of the default
-        String name = (String)rsvc.getProperty("runtime.log.logsystem.avalon.logger");
+        String name = (String)rsvc.getProperty(AVALON_LOGGER);
         if (name != null)
         {
             this.logger = Hierarchy.getDefaultHierarchy().getLoggerFor(name);
@@ -59,25 +80,42 @@
 
             // if we have a file property, use it to create a FileTarget
             String file = (String)rsvc.getProperty(RuntimeConstants.RUNTIME_LOG);
-            if (file != null && file.length() > 0)
+            if (StringUtils.isNotEmpty(file))
             {
-                initTarget(file);
+                initTarget(file, rsvc);
             }
         }
     }
 
     // creates a file target using the specified file name
-    private void initTarget(String file) throws Exception
+    private void initTarget(final String file, final RuntimeServices rsvc) throws Exception
     {
         try
         {
-            VelocityFormatter vf =
-                new VelocityFormatter("%{time} %{message}\\n%{throwable}");
+            String format = null;
+            Priority level = null;
+            if (rsvc != null)
+            {
+                format = (String) rsvc.getProperty(AVALON_LOGGER_FORMAT);
+                level = (Priority) logLevels.get(rsvc.getProperty(AVALON_LOGGER_LEVEL));
+            }
+
+            if (StringUtils.isEmpty(format))
+            {
+                format = "%{time} %{message}\\n%{throwable}";
+            }
+            
+            if (level == null)
+            {
+                level = Priority.DEBUG;
+            }
+                
+            VelocityFormatter vf = new VelocityFormatter(format);
 
             // make the target and keep the default behavior of not appending
             FileTarget target = new FileTarget(new File(file), false, vf);
 
-            logger.setPriority(Priority.DEBUG);
+            logger.setPriority(level);
             logger.setLogTargets(new LogTarget[] { target });
             log(DEBUG_ID, "AvalonLogChute initialized using file '"+file+'\'');
         }
@@ -98,7 +136,7 @@
     public void init(String file) throws Exception
     {
         logger = Hierarchy.getDefaultHierarchy().getLoggerFor(rsvc.toString());
-        initTarget(file);
+        initTarget(file, null);
         // nag the theoretical user
         log(WARN_ID, "You shouldn't be using the init(String file) method!");
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-dev-help@jakarta.apache.org