Adapt to recent API changes
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / NodeLogger.java
index 158bac70a40159c1bebcb353adf245b355184edd..0b410379402af36dfaa35fe21b75b3d7c5822be5 100644 (file)
@@ -23,17 +23,10 @@ import java.util.Properties;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.log4j.AppenderSkeleton;
-import org.apache.log4j.Level;
-import org.apache.log4j.LogManager;
-import org.apache.log4j.Logger;
-import org.apache.log4j.PropertyConfigurator;
-import org.apache.log4j.spi.LoggingEvent;
-import org.argeo.api.ArgeoLogListener;
-import org.argeo.api.ArgeoLogger;
-import org.argeo.api.NodeConstants;
+import org.argeo.api.cms.CmsConstants;
+import org.argeo.api.cms.CmsLog;
+import org.argeo.cms.ArgeoLogListener;
+import org.argeo.cms.ArgeoLogger;
 import org.argeo.cms.CmsException;
 import org.argeo.cms.auth.CurrentUser;
 import org.argeo.osgi.useradmin.UserAdminConf;
@@ -51,14 +44,11 @@ class NodeLogger implements ArgeoLogger, LogListener {
        /** Internal debug for development purposes. */
        private static Boolean debug = false;
 
-       // private final static Log log = LogFactory.getLog(NodeLogger.class);
-
        private Boolean disabled = false;
 
        private String level = null;
 
-       private Level log4jLevel = null;
-       // private Layout layout;
+//     private Level log4jLevel = null;
 
        private Properties configuration;
 
@@ -86,30 +76,32 @@ class NodeLogger implements ArgeoLogger, LogListener {
        };
 
        public NodeLogger(LogReaderService lrs) {
-               Enumeration<LogEntry> logEntries = lrs.getLog();
-               while (logEntries.hasMoreElements())
-                       logged(logEntries.nextElement());
-               lrs.addLogListener(this);
-
-               // configure log4j watcher
-               String log4jConfiguration = KernelUtils.getFrameworkProp("log4j.configuration");
-               if (log4jConfiguration != null && log4jConfiguration.startsWith("file:")) {
-                       if (log4jConfiguration.contains("..")) {
-                               if (log4jConfiguration.startsWith("file://"))
-                                       log4jConfiguration = log4jConfiguration.substring("file://".length());
-                               else if (log4jConfiguration.startsWith("file:"))
-                                       log4jConfiguration = log4jConfiguration.substring("file:".length());
-                       }
-                       try {
-                               Path log4jconfigPath;
-                               if (log4jConfiguration.startsWith("file:"))
-                                       log4jconfigPath = Paths.get(new URI(log4jConfiguration));
-                               else
-                                       log4jconfigPath = Paths.get(log4jConfiguration);
-                               Thread log4jConfWatcher = new Log4jConfWatcherThread(log4jconfigPath);
-                               log4jConfWatcher.start();
-                       } catch (Exception e) {
-                               stdErr("Badly formatted log4j configuration URI " + log4jConfiguration + ": " + e.getMessage());
+               if (lrs != null) {
+                       Enumeration<LogEntry> logEntries = lrs.getLog();
+                       while (logEntries.hasMoreElements())
+                               logged(logEntries.nextElement());
+                       lrs.addLogListener(this);
+
+                       // configure log4j watcher
+                       String log4jConfiguration = KernelUtils.getFrameworkProp("log4j.configuration");
+                       if (log4jConfiguration != null && log4jConfiguration.startsWith("file:")) {
+                               if (log4jConfiguration.contains("..")) {
+                                       if (log4jConfiguration.startsWith("file://"))
+                                               log4jConfiguration = log4jConfiguration.substring("file://".length());
+                                       else if (log4jConfiguration.startsWith("file:"))
+                                               log4jConfiguration = log4jConfiguration.substring("file:".length());
+                               }
+                               try {
+                                       Path log4jconfigPath;
+                                       if (log4jConfiguration.startsWith("file:"))
+                                               log4jconfigPath = Paths.get(new URI(log4jConfiguration));
+                                       else
+                                               log4jconfigPath = Paths.get(log4jConfiguration);
+                                       Thread log4jConfWatcher = new Log4jConfWatcherThread(log4jconfigPath);
+                                       log4jConfWatcher.start();
+                               } catch (Exception e) {
+                                       stdErr("Badly formatted log4j configuration URI " + log4jConfiguration + ": " + e.getMessage());
+                               }
                        }
                }
        }
@@ -124,7 +116,7 @@ class NodeLogger implements ArgeoLogger, LogListener {
                        // setLayout(new PatternLayout(pattern));
                        appender = new AppenderImpl();
                        reloadConfiguration();
-                       Logger.getRootLogger().addAppender(appender);
+//                     Logger.getRootLogger().addAppender(appender);
 
                        logDispatcherThread = new LogDispatcherThread();
                        logDispatcherThread.start();
@@ -134,7 +126,7 @@ class NodeLogger implements ArgeoLogger, LogListener {
        }
 
        public void destroy() throws Exception {
-               Logger.getRootLogger().removeAppender(appender);
+//             Logger.getRootLogger().removeAppender(appender);
                allUsersListeners.clear();
                for (List<ArgeoLogListener> lst : userListeners.values())
                        lst.clear();
@@ -158,7 +150,7 @@ class NodeLogger implements ArgeoLogger, LogListener {
        //
        @Override
        public void logged(LogEntry status) {
-               Log pluginLog = LogFactory.getLog(status.getBundle().getSymbolicName());
+               CmsLog pluginLog = CmsLog.getLog(status.getBundle().getSymbolicName());
                LogLevel severity = status.getLogLevel();
                if (severity.equals(LogLevel.ERROR) && pluginLog.isErrorEnabled()) {
                        // FIXME Fix Argeo TP
@@ -197,9 +189,9 @@ class NodeLogger implements ArgeoLogger, LogListener {
                        } else {
                                sb.append(arrayToString(objectClasses));
                        }
-                       Object cn = sr.getProperty(NodeConstants.CN);
+                       Object cn = sr.getProperty(CmsConstants.CN);
                        if (cn != null)
-                               sb.append(" " + NodeConstants.CN + ": " + cn);
+                               sb.append(" " + CmsConstants.CN + ": " + cn);
                        Object factoryPid = sr.getProperty(ConfigurationAdmin.SERVICE_FACTORYPID);
                        if (factoryPid != null)
                                sb.append(" " + ConfigurationAdmin.SERVICE_FACTORYPID + ": " + factoryPid);
@@ -351,8 +343,8 @@ class NodeLogger implements ArgeoLogger, LogListener {
         */
        protected void reloadConfiguration() {
                if (configuration != null) {
-                       LogManager.resetConfiguration();
-                       PropertyConfigurator.configure(configuration);
+//                     LogManager.resetConfiguration();
+//                     PropertyConfigurator.configure(configuration);
                }
        }
 
@@ -364,18 +356,18 @@ class NodeLogger implements ArgeoLogger, LogListener {
                        return;
 
                if (level != null && !level.trim().equals("")) {
-                       if (log4jLevel == null || !log4jLevel.toString().equals(level))
-                               try {
-                                       log4jLevel = Level.toLevel(level);
-                               } catch (Exception e) {
-                                       System.err.println("Log4j level could not be set for level '" + level + "', resetting it to null.");
-                                       e.printStackTrace();
-                                       level = null;
-                               }
-
-                       if (log4jLevel != null && !event.getLoggingEvent().getLevel().isGreaterOrEqual(log4jLevel)) {
-                               return;
-                       }
+//                     if (log4jLevel == null || !log4jLevel.toString().equals(level))
+//                             try {
+//                                     log4jLevel = Level.toLevel(level);
+//                             } catch (Exception e) {
+//                                     System.err.println("Log4j level could not be set for level '" + level + "', resetting it to null.");
+//                                     e.printStackTrace();
+//                                     level = null;
+//                             }
+//
+//                     if (log4jLevel != null && !event.getLoggingEvent().getLevel().isGreaterOrEqual(log4jLevel)) {
+//                             return;
+//                     }
                }
 
                try {
@@ -402,12 +394,12 @@ class NodeLogger implements ArgeoLogger, LogListener {
        }
 
        protected void dispatchEvent(ArgeoLogListener logListener, LogEvent evt) {
-               LoggingEvent event = evt.getLoggingEvent();
-               logListener.appendLog(evt.getUsername(), event.getTimeStamp(), event.getLevel().toString(),
-                               event.getLoggerName(), event.getThreadName(), event.getMessage(), event.getThrowableStrRep());
+//             LoggingEvent event = evt.getLoggingEvent();
+//             logListener.appendLog(evt.getUsername(), event.getTimeStamp(), event.getLevel().toString(),
+//                             event.getLoggerName(), event.getThreadName(), event.getMessage(), event.getThrowableStrRep());
        }
 
-       private class AppenderImpl extends AppenderSkeleton {
+       private class AppenderImpl { //extends AppenderSkeleton {
                public boolean requiresLayout() {
                        return false;
                }
@@ -415,17 +407,17 @@ class NodeLogger implements ArgeoLogger, LogListener {
                public void close() {
                }
 
-               @Override
-               protected void append(LoggingEvent event) {
-                       if (events != null) {
-                               try {
-                                       String username = CurrentUser.getUsername();
-                                       events.put(new LogEvent(username, event));
-                               } catch (InterruptedException e) {
-                                       // silent
-                               }
-                       }
-               }
+//             @Override
+//             protected void append(LoggingEvent event) {
+//                     if (events != null) {
+//                             try {
+//                                     String username = CurrentUser.getUsername();
+//                                     events.put(new LogEvent(username, event));
+//                             } catch (InterruptedException e) {
+//                                     // silent
+//                             }
+//                     }
+//             }
 
        }
 
@@ -473,36 +465,36 @@ class NodeLogger implements ArgeoLogger, LogListener {
 
        private class LogEvent {
                private final String username;
-               private final LoggingEvent loggingEvent;
+//             private final LoggingEvent loggingEvent;
 
-               public LogEvent(String username, LoggingEvent loggingEvent) {
+               public LogEvent(String username) {
                        super();
                        this.username = username;
-                       this.loggingEvent = loggingEvent;
-               }
-
-               @Override
-               public int hashCode() {
-                       return loggingEvent.hashCode();
+//                     this.loggingEvent = loggingEvent;
                }
 
-               @Override
-               public boolean equals(Object obj) {
-                       return loggingEvent.equals(obj);
-               }
-
-               @Override
-               public String toString() {
-                       return username + "@ " + loggingEvent.toString();
-               }
+//             @Override
+//             public int hashCode() {
+//                     return loggingEvent.hashCode();
+//             }
+//
+//             @Override
+//             public boolean equals(Object obj) {
+//                     return loggingEvent.equals(obj);
+//             }
+//
+//             @Override
+//             public String toString() {
+//                     return username + "@ " + loggingEvent.toString();
+//             }
 
                public String getUsername() {
                        return username;
                }
 
-               public LoggingEvent getLoggingEvent() {
-                       return loggingEvent;
-               }
+//             public LoggingEvent getLoggingEvent() {
+//                     return loggingEvent;
+//             }
 
        }
 
@@ -530,7 +522,7 @@ class NodeLogger implements ArgeoLogger, LogListener {
                                                if (log4jConfigurationPath.equals(parentDir.resolve(changed))) {
                                                        if (isInternalDebugEnabled())
                                                                debug(log4jConfigurationPath + " has changed, reloading.");
-                                                       PropertyConfigurator.configure(log4jConfigurationPath.toUri().toURL());
+//                                                     PropertyConfigurator.configure(log4jConfigurationPath.toUri().toURL());
                                                }
                                        }
                                        // reset the key