X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FNodeLogger.java;h=134ab26ab3d06b8f3a97bd81bc357b48dd11c342;hb=6a62c05a487ba34946b1924a039603e68b1d54e6;hp=4f58e7525cb620d6549a6926e020f0501bd87870;hpb=df8ecf06ff62ff3f31a7cbe7c992e183312563fd;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeLogger.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeLogger.java index 4f58e7525..134ab26ab 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeLogger.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeLogger.java @@ -37,7 +37,7 @@ import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import org.apache.log4j.spi.LoggingEvent; -import org.argeo.ArgeoException; +import org.argeo.cms.CmsException; import org.argeo.cms.auth.CurrentUser; import org.argeo.node.ArgeoLogListener; import org.argeo.node.ArgeoLogger; @@ -109,7 +109,7 @@ class NodeLogger implements ArgeoLogger, LogListener { logDispatcherThread = new LogDispatcherThread(); logDispatcherThread.start(); } catch (Exception e) { - throw new ArgeoException("Cannot initialize log4j"); + throw new CmsException("Cannot initialize log4j"); } } @@ -129,6 +129,10 @@ class NodeLogger implements ArgeoLogger, LogListener { // this.layout = layout; // } + public String toString() { + return "Node Logger"; + } + // // OSGi LOGGER // @@ -150,53 +154,76 @@ class NodeLogger implements ArgeoLogger, LogListener { } private String msg(LogEntry status) { - StringBuilder sb = new StringBuilder(status.getMessage()); + StringBuilder sb = new StringBuilder(); + sb.append(status.getMessage()); ServiceReference sr = status.getServiceReference(); if (sr != null) { sb.append(' '); String[] objectClasses = (String[]) sr.getProperty(Constants.OBJECTCLASS); - sb.append(arrayToString(objectClasses)); + if (isSpringApplicationContext(objectClasses)) { + sb.append("{org.springframework.context.ApplicationContext}"); + Object symbolicName = sr.getProperty(Constants.BUNDLE_SYMBOLICNAME); + if (symbolicName != null) + sb.append(" " + Constants.BUNDLE_SYMBOLICNAME + ": " + symbolicName); + } else { + sb.append(arrayToString(objectClasses)); + } Object cn = sr.getProperty(NodeConstants.CN); if (cn != null) sb.append(" " + NodeConstants.CN + ": " + cn); Object factoryPid = sr.getProperty(ConfigurationAdmin.SERVICE_FACTORYPID); if (factoryPid != null) sb.append(" " + ConfigurationAdmin.SERVICE_FACTORYPID + ": " + factoryPid); -// else { -// Object servicePid = sr.getProperty(Constants.SERVICE_PID); -// if (servicePid != null) -// sb.append(" " + Constants.SERVICE_PID + ": " + servicePid); -// } + // else { + // Object servicePid = sr.getProperty(Constants.SERVICE_PID); + // if (servicePid != null) + // sb.append(" " + Constants.SERVICE_PID + ": " + servicePid); + // } // servlets Object whiteBoardPattern = sr.getProperty(KernelConstants.WHITEBOARD_PATTERN_PROP); - if (whiteBoardPattern != null) - sb.append(" " + KernelConstants.WHITEBOARD_PATTERN_PROP + ": " - + arrayToString((String[]) whiteBoardPattern)); + if (whiteBoardPattern != null) { + if (whiteBoardPattern instanceof String) { + sb.append(" " + KernelConstants.WHITEBOARD_PATTERN_PROP + ": " + whiteBoardPattern); + } else { + sb.append(" " + KernelConstants.WHITEBOARD_PATTERN_PROP + ": " + + arrayToString((String[]) whiteBoardPattern)); + } + } // RWT Object contextName = sr.getProperty(KernelConstants.CONTEXT_NAME_PROP); if (contextName != null) sb.append(" " + KernelConstants.CONTEXT_NAME_PROP + ": " + contextName); - + // user directories Object baseDn = sr.getProperty(UserAdminConf.baseDn.name()); if (baseDn != null) sb.append(" " + UserAdminConf.baseDn.name() + ": " + baseDn); + } return sb.toString(); } private String arrayToString(Object[] arr) { StringBuilder sb = new StringBuilder(); - sb.append('{'); + sb.append('['); for (int i = 0; i < arr.length; i++) { if (i != 0) sb.append(','); sb.append(arr[i]); } - sb.append('}'); + sb.append(']'); return sb.toString(); } + private boolean isSpringApplicationContext(String[] objectClasses) { + for (String clss : objectClasses) { + if (clss.equals("org.eclipse.gemini.blueprint.context.DelegatedExecutionOsgiBundleApplicationContext")) { + return true; + } + } + return false; + } + // // ARGEO LOGGER // @@ -204,7 +231,7 @@ class NodeLogger implements ArgeoLogger, LogListener { public synchronized void register(ArgeoLogListener listener, Integer numberOfPreviousEvents) { String username = CurrentUser.getUsername(); if (username == null) - throw new ArgeoException("Only authenticated users can register a log listener"); + throw new CmsException("Only authenticated users can register a log listener"); if (!userListeners.containsKey(username)) { List lst = Collections.synchronizedList(new ArrayList()); @@ -233,9 +260,9 @@ class NodeLogger implements ArgeoLogger, LogListener { if (username == null)// FIXME return; if (!userListeners.containsKey(username)) - throw new ArgeoException("No user listeners " + listener + " registered for user " + username); + throw new CmsException("No user listeners " + listener + " registered for user " + username); if (!userListeners.get(username).contains(listener)) - throw new ArgeoException("No user listeners " + listener + " registered for user " + username); + throw new CmsException("No user listeners " + listener + " registered for user " + username); userListeners.get(username).remove(listener); if (userListeners.get(username).isEmpty()) userListeners.remove(username);