X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FNodeLogger.java;h=158bac70a40159c1bebcb353adf245b355184edd;hb=fb22feb37b0c2340d3d846dce4b6f47d0f728efb;hp=045229ce1fc81eadfe7fb8bade2e317c4f99270f;hpb=4613b5b46877a9013c282daabc5692efa5692afb;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 045229ce1..158bac70a 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 @@ -1,21 +1,7 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ package org.argeo.cms.internal.kernel; import java.io.IOException; +import java.net.URI; import java.nio.file.FileSystems; import java.nio.file.Path; import java.nio.file.Paths; @@ -45,19 +31,20 @@ 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.cms.CmsException; import org.argeo.cms.auth.CurrentUser; -import org.argeo.node.ArgeoLogListener; -import org.argeo.node.ArgeoLogger; -import org.argeo.node.NodeConstants; import org.argeo.osgi.useradmin.UserAdminConf; +import org.osgi.framework.Bundle; import org.osgi.framework.Constants; import org.osgi.framework.ServiceReference; import org.osgi.service.cm.ConfigurationAdmin; import org.osgi.service.log.LogEntry; +import org.osgi.service.log.LogLevel; import org.osgi.service.log.LogListener; import org.osgi.service.log.LogReaderService; -import org.osgi.service.log.LogService; /** Not meant to be used directly in standard log4j config */ class NodeLogger implements ArgeoLogger, LogListener { @@ -98,7 +85,6 @@ class NodeLogger implements ArgeoLogger, LogListener { } }; - @SuppressWarnings("unchecked") public NodeLogger(LogReaderService lrs) { Enumeration logEntries = lrs.getLog(); while (logEntries.hasMoreElements()) @@ -115,7 +101,11 @@ class NodeLogger implements ArgeoLogger, LogListener { log4jConfiguration = log4jConfiguration.substring("file:".length()); } try { - Path log4jconfigPath = Paths.get(log4jConfiguration); + 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) { @@ -169,23 +159,32 @@ class NodeLogger implements ArgeoLogger, LogListener { @Override public void logged(LogEntry status) { Log pluginLog = LogFactory.getLog(status.getBundle().getSymbolicName()); - Integer severity = status.getLevel(); - if (severity == LogService.LOG_ERROR) { + LogLevel severity = status.getLogLevel(); + if (severity.equals(LogLevel.ERROR) && pluginLog.isErrorEnabled()) { // FIXME Fix Argeo TP if (status.getException() instanceof SignatureException) return; pluginLog.error(msg(status), status.getException()); - } else if (severity == LogService.LOG_WARNING) - pluginLog.warn(msg(status), status.getException()); - else if (severity == LogService.LOG_INFO && pluginLog.isDebugEnabled()) + } else if (severity.equals(LogLevel.WARN) && pluginLog.isWarnEnabled()) { + if (pluginLog.isTraceEnabled()) + pluginLog.warn(msg(status), status.getException()); + else + pluginLog.warn(msg(status)); + } else if (severity.equals(LogLevel.INFO) && pluginLog.isDebugEnabled()) pluginLog.debug(msg(status), status.getException()); - else if (severity == LogService.LOG_DEBUG && pluginLog.isTraceEnabled()) + else if (severity.equals(LogLevel.DEBUG) && pluginLog.isTraceEnabled()) + pluginLog.trace(msg(status), status.getException()); + else if (severity.equals(LogLevel.TRACE) && pluginLog.isTraceEnabled()) pluginLog.trace(msg(status), status.getException()); } private String msg(LogEntry status) { StringBuilder sb = new StringBuilder(); sb.append(status.getMessage()); + Bundle bundle = status.getBundle(); + if (bundle != null) { + sb.append(" '" + bundle.getSymbolicName() + "'"); + } ServiceReference sr = status.getServiceReference(); if (sr != null) { sb.append(' ');