[OFBiz] SVN: r7285 - trunk/base/src/base/org/ofbiz/base/util

jaz@svn.ofbiz.org jaz at svn.ofbiz.org
Wed Apr 12 13:40:21 CDT 2006


Author: jaz
Date: 2006-04-12 13:40:19 -0500 (Wed, 12 Apr 2006)
New Revision: 7285

Modified:
   trunk/base/src/base/org/ofbiz/base/util/Debug.java
Log:
added way to add log4j appenders via java code


Modified: trunk/base/src/base/org/ofbiz/base/util/Debug.java
===================================================================
--- trunk/base/src/base/org/ofbiz/base/util/Debug.java	2006-04-12 18:39:42 UTC (rev 7284)
+++ trunk/base/src/base/org/ofbiz/base/util/Debug.java	2006-04-12 18:40:19 UTC (rev 7285)
@@ -23,6 +23,7 @@
  */
 package org.ofbiz.base.util;
 
+import java.io.IOException;
 import java.io.PrintStream;
 import java.io.PrintWriter;
 import java.text.DateFormat;
@@ -33,8 +34,12 @@
 import org.apache.avalon.util.exception.ExceptionHelper;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
+import org.apache.log4j.PatternLayout;
 import org.apache.log4j.PropertyConfigurator;
+import org.apache.log4j.RollingFileAppender;
+import org.apache.log4j.Appender;
 import org.apache.log4j.spi.LoggerRepository;
+
 import org.ofbiz.base.util.collections.FlexibleProperties;
 
 /**
@@ -338,4 +343,71 @@
             return;
         levelOnCache[level] = on;
     }
+
+    public static synchronized Appender getNewFileAppender(String name, String logFile, long maxSize, int backupIdx, String pattern) {
+        if (pattern == null) {
+            pattern = "%-5r[%24F:%-3L:%-5p]%x %m%n";
+        }
+
+        PatternLayout layout = new PatternLayout(pattern);
+        layout.activateOptions();
+
+        RollingFileAppender newAppender = null;
+        try {
+            newAppender = new RollingFileAppender(layout, logFile, true);
+        } catch (IOException e) {
+            logFatal(e, Debug.class.getName());
+        }
+
+        if (newAppender != null) {
+            if (backupIdx > 0) {
+                newAppender.setMaxBackupIndex(backupIdx);
+            }
+            if (maxSize > 0) {
+                newAppender.setMaximumFileSize(maxSize);
+            }
+            newAppender.activateOptions();
+            newAppender.setName(name);
+        }
+
+        return newAppender;
+    }
+
+    public static boolean registerFileAppender(String module, String name, String logFile, long maxSize, int backupIdx, String pattern) {
+        Logger logger = Logger.getLogger(module);
+        boolean found = false;
+
+        Appender foundAppender = logger.getAppender(name);
+        if (foundAppender == null) {
+            Enumeration enum = Logger.getRootLogger().getLoggerRepository().getCurrentLoggers();
+            while (enum.hasMoreElements() && foundAppender == null) {
+                Logger log = (Logger) enum.nextElement();
+                foundAppender = log.getAppender(name);
+            }
+        } else {
+            return true;
+        }
+
+        if (foundAppender == null) {
+            if (logFile != null) {
+                foundAppender = getNewFileAppender(name, logFile, maxSize, backupIdx, pattern);
+                if (foundAppender != null) {
+                    found = true;
+                }
+            }
+        } else {
+            found = true;
+        }
+
+        logger.addAppender(foundAppender);
+        return found;
+    }
+
+    public static boolean registerFileAppender(String module, String name, String logFile) {
+        return registerFileAppender(module, name, logFile, 0, 10, null);
+    }
+
+    public static boolean registerFileAppender(String module, String name) {
+        return registerFileAppender(module, name, null, -1, -1, null);
+    }
 }



More information about the Svn mailing list