From 938f9575c8091c723fa076f3c962e4b29556d2c5 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Thu, 30 Dec 2021 11:32:49 +0100 Subject: [PATCH] SLF4J implementation. --- dep/org.argeo.dep.cms.minimal/pom.xml | 54 +++--- org.argeo.api/bnd.bnd | 5 +- .../src/org/apache/commons/logging/Log.java | 151 +++++++++++++++ .../apache/commons/logging/LogFactory.java | 31 +++ org.argeo.cms.jcr/build.properties | 2 - org.argeo.cms/bnd.bnd | 1 + .../argeo/cms/internal/kernel/Activator.java | 2 +- .../argeo/cms/internal/kernel/NodeLogger.java | 115 +++++------ org.argeo.init/bnd.bnd | 1 + .../init/logging/ThinJavaUtilLogging.java | 2 +- .../org/argeo/init/logging/ThinLogging.java | 7 +- org.argeo.transition/.classpath | 7 + org.argeo.transition/.project | 28 +++ org.argeo.transition/bnd.bnd | 2 + org.argeo.transition/build.properties | 4 + org.argeo.transition/pom.xml | 22 +++ .../src/org/slf4j/impl/ArgeoLogger.java | 181 ++++++++++++++++++ .../org/slf4j/impl/StaticLoggerBinder.java | 43 +++++ pom.xml | 5 +- 19 files changed, 568 insertions(+), 95 deletions(-) create mode 100644 org.argeo.api/src/org/apache/commons/logging/Log.java create mode 100644 org.argeo.api/src/org/apache/commons/logging/LogFactory.java create mode 100644 org.argeo.transition/.classpath create mode 100644 org.argeo.transition/.project create mode 100644 org.argeo.transition/bnd.bnd create mode 100644 org.argeo.transition/build.properties create mode 100644 org.argeo.transition/pom.xml create mode 100644 org.argeo.transition/src/org/slf4j/impl/ArgeoLogger.java create mode 100644 org.argeo.transition/src/org/slf4j/impl/StaticLoggerBinder.java diff --git a/dep/org.argeo.dep.cms.minimal/pom.xml b/dep/org.argeo.dep.cms.minimal/pom.xml index fd029efa4..7434e4289 100644 --- a/dep/org.argeo.dep.cms.minimal/pom.xml +++ b/dep/org.argeo.dep.cms.minimal/pom.xml @@ -14,6 +14,11 @@ + + org.argeo.commons + org.argeo.init + 2.3-SNAPSHOT + org.argeo.commons org.argeo.enterprise @@ -35,6 +40,11 @@ org.argeo.api 2.3-SNAPSHOT + + org.argeo.commons + org.argeo.transition + 2.3-SNAPSHOT + org.argeo.commons org.argeo.cms @@ -43,22 +53,26 @@ - - org.argeo.tp.apache - org.apache.log4j - - - org.argeo.tp.misc - org.slf4j.log4j12 - + + + + + + + + org.argeo.tp.misc org.slf4j.api - - org.argeo.tp.misc - org.slf4j.commons.logging - + + + + + + + + @@ -83,10 +97,10 @@ org.argeo.tp.bouncycastle bcpkix - - - - + + + + @@ -233,14 +247,6 @@ org.argeo.tp.misc org.postgresql.jdbc42 - - - - org.argeo.commons - org.argeo.osgi.boot - 2.3-SNAPSHOT - test - diff --git a/org.argeo.api/bnd.bnd b/org.argeo.api/bnd.bnd index 6f9826d27..0dfe09663 100644 --- a/org.argeo.api/bnd.bnd +++ b/org.argeo.api/bnd.bnd @@ -1,2 +1,5 @@ Import-Package: javax.naming.*,\ -javax.security.* \ No newline at end of file +javax.security.* + +Export-Package: org.argeo.api.*,\ +org.apache.commons.logging;version=1.2.666 \ No newline at end of file diff --git a/org.argeo.api/src/org/apache/commons/logging/Log.java b/org.argeo.api/src/org/apache/commons/logging/Log.java new file mode 100644 index 000000000..4c4f8b407 --- /dev/null +++ b/org.argeo.api/src/org/apache/commons/logging/Log.java @@ -0,0 +1,151 @@ +package org.apache.commons.logging; + +import java.lang.System.Logger; +import java.lang.System.Logger.Level; +import java.util.Objects; + +/** A pseudo implementation of Apache Commons Logging. */ +public interface Log { + Logger getLogger(); + + default boolean isDebugEnabled() { + return getLogger().isLoggable(Level.DEBUG); + } + + default boolean isErrorEnabled() { + return getLogger().isLoggable(Level.ERROR); + } + + default boolean isInfoEnabled() { + return getLogger().isLoggable(Level.INFO); + } + + default boolean isTraceEnabled() { + return getLogger().isLoggable(Level.TRACE); + } + + default boolean isWarnEnabled() { + return getLogger().isLoggable(Level.WARNING); + } + + /* + * TRACE + */ + + default void trace(String message) { + getLogger().log(Level.TRACE, message); + } + + default void trace(Object message) { + getLogger().log(Level.TRACE, Objects.requireNonNull(message)); + } + + default void trace(String message, Throwable t) { + getLogger().log(Level.TRACE, message, t); + } + + default void trace(Object message, Throwable t) { + trace(Objects.requireNonNull(message).toString(), t); + } + + default void trace(String format, Object... arguments) { + getLogger().log(Level.TRACE, format, arguments); + } + + /* + * DEBUG + */ + + default void debug(String message) { + getLogger().log(Level.DEBUG, message); + } + + default void debug(Object message) { + getLogger().log(Level.DEBUG, message); + } + + default void debug(String message, Throwable t) { + getLogger().log(Level.DEBUG, message, t); + } + + default void debug(Object message, Throwable t) { + debug(Objects.requireNonNull(message).toString(), t); + } + + default void debug(String format, Object... arguments) { + getLogger().log(Level.DEBUG, format, arguments); + } + + /* + * INFO + */ + + default void info(String message) { + getLogger().log(Level.INFO, message); + } + + default void info(Object message) { + getLogger().log(Level.INFO, message); + } + + default void info(String message, Throwable t) { + getLogger().log(Level.INFO, message, t); + } + + default void info(Object message, Throwable t) { + info(Objects.requireNonNull(message).toString(), t); + } + + default void info(String format, Object... arguments) { + getLogger().log(Level.INFO, format, arguments); + } + + /* + * WARN + */ + + default void warn(String message) { + getLogger().log(Level.WARNING, message); + } + + default void warn(Object message) { + getLogger().log(Level.WARNING, message); + } + + default void warn(String message, Throwable t) { + getLogger().log(Level.WARNING, message, t); + } + + default void warn(Object message, Throwable t) { + warn(Objects.requireNonNull(message).toString(), t); + } + + default void warn(String format, Object... arguments) { + getLogger().log(Level.WARNING, format, arguments); + } + + /* + * ERROR + */ + + default void error(String message) { + getLogger().log(Level.ERROR, message); + } + + default void error(Object message) { + getLogger().log(Level.ERROR, message); + } + + default void error(String message, Throwable t) { + getLogger().log(Level.ERROR, message, t); + } + + default void error(Object message, Throwable t) { + error(Objects.requireNonNull(message).toString(), t); + } + + default void error(String format, Object... arguments) { + getLogger().log(Level.ERROR, format, arguments); + } + +} diff --git a/org.argeo.api/src/org/apache/commons/logging/LogFactory.java b/org.argeo.api/src/org/apache/commons/logging/LogFactory.java new file mode 100644 index 000000000..e95b7923e --- /dev/null +++ b/org.argeo.api/src/org/apache/commons/logging/LogFactory.java @@ -0,0 +1,31 @@ +package org.apache.commons.logging; + +import java.lang.System.Logger; +import java.util.Objects; + +/** A pseudo implementation of Apache Commons Logging. */ +public abstract class LogFactory { + public static Log getLog(Class clss) { + return getLog(Objects.requireNonNull(clss).getName()); + } + + public static Log getLog(String name) { + Logger logger = System.getLogger(Objects.requireNonNull(name)); + return new LoggerWrapper(logger); + } + + static class LoggerWrapper implements Log { + private final Logger logger; + + LoggerWrapper(Logger logger) { + super(); + this.logger = logger; + } + + @Override + public Logger getLogger() { + return logger; + } + + } +} diff --git a/org.argeo.cms.jcr/build.properties b/org.argeo.cms.jcr/build.properties index fc636406c..83a4053bc 100644 --- a/org.argeo.cms.jcr/build.properties +++ b/org.argeo.cms.jcr/build.properties @@ -14,8 +14,6 @@ additional.bundles = org.junit,\ org.apache.jackrabbit.spi,\ org.apache.jackrabbit.spi.commons,\ org.slf4j.api,\ - org.slf4j.log4j12,\ - org.apache.log4j,\ org.apache.commons.collections,\ EDU.oswego.cs.dl.util.concurrent,\ org.apache.lucene,\ diff --git a/org.argeo.cms/bnd.bnd b/org.argeo.cms/bnd.bnd index e5046d308..dc2cca306 100644 --- a/org.argeo.cms/bnd.bnd +++ b/org.argeo.cms/bnd.bnd @@ -5,6 +5,7 @@ Import-Package: org.apache.commons.httpclient.cookie;resolution:=optional,\ org.osgi.*;version=0.0.0,\ org.osgi.service.http.whiteboard;version=0.0.0,\ org.osgi.framework.namespace;version=0.0.0,\ +org.apache.log4j.*;resolution:=optional,\ * Service-Component:\ diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/Activator.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/Activator.java index 3fbed28f4..8d68be643 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/Activator.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/Activator.java @@ -76,7 +76,7 @@ public class Activator implements BundleActivator { try { initSecurity(); - initArgeoLogger(); +// initArgeoLogger(); initNode(); if (log.isTraceEnabled()) 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 fef7a7a30..89c7e05a6 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 @@ -25,12 +25,6 @@ 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; @@ -51,14 +45,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; @@ -126,7 +117,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(); @@ -136,7 +127,7 @@ class NodeLogger implements ArgeoLogger, LogListener { } public void destroy() throws Exception { - Logger.getRootLogger().removeAppender(appender); +// Logger.getRootLogger().removeAppender(appender); allUsersListeners.clear(); for (List lst : userListeners.values()) lst.clear(); @@ -353,8 +344,8 @@ class NodeLogger implements ArgeoLogger, LogListener { */ protected void reloadConfiguration() { if (configuration != null) { - LogManager.resetConfiguration(); - PropertyConfigurator.configure(configuration); +// LogManager.resetConfiguration(); +// PropertyConfigurator.configure(configuration); } } @@ -366,18 +357,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 { @@ -404,12 +395,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; } @@ -417,17 +408,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 +// } +// } +// } } @@ -475,36 +466,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; +// this.loggingEvent = loggingEvent; } - @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(); - } +// @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; +// } } @@ -532,7 +523,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 diff --git a/org.argeo.init/bnd.bnd b/org.argeo.init/bnd.bnd index 734c77440..122d7f586 100644 --- a/org.argeo.init/bnd.bnd +++ b/org.argeo.init/bnd.bnd @@ -6,5 +6,6 @@ Bundle-Activator: org.argeo.init.osgi.Activator Import-Package: \ org.osgi.*;version=0.0.0,\ java.util.logging.*;resolution:=optional + Private-Package: * Export-Package: !* diff --git a/org.argeo.init/src/org/argeo/init/logging/ThinJavaUtilLogging.java b/org.argeo.init/src/org/argeo/init/logging/ThinJavaUtilLogging.java index 5b51d00bd..7670c2573 100644 --- a/org.argeo.init/src/org/argeo/init/logging/ThinJavaUtilLogging.java +++ b/org.argeo.init/src/org/argeo/init/logging/ThinJavaUtilLogging.java @@ -13,6 +13,6 @@ class ThinJavaUtilLogging { logManager.reset(); Logger rootLogger = logManager.getLogger(""); rootLogger.addHandler(new ThinHandler()); - rootLogger.setLevel(java.util.logging.Level.FINE); + rootLogger.setLevel(java.util.logging.Level.INFO); } } diff --git a/org.argeo.init/src/org/argeo/init/logging/ThinLogging.java b/org.argeo.init/src/org/argeo/init/logging/ThinLogging.java index 44baa6919..2c2b04d2c 100644 --- a/org.argeo.init/src/org/argeo/init/logging/ThinLogging.java +++ b/org.argeo.init/src/org/argeo/init/logging/ThinLogging.java @@ -41,7 +41,7 @@ class ThinLogging { Runtime.getRuntime().addShutdownHook(new Thread(() -> close(), "Log shutdown")); - setDefaultLevel(Level.DEBUG); + setDefaultLevel(Level.INFO); } protected void close() { @@ -106,7 +106,7 @@ class ThinLogging { public void log(Level level, ResourceBundle bundle, String format, Object... params) { // measure timestamp first Instant now = Instant.now(); - String msg = MessageFormat.format(format, params); + String msg = params == null ? format : MessageFormat.format(format, params); publisher.log(this, level, bundle, msg, null, now, findCallLocation()); } @@ -122,9 +122,12 @@ class ThinLogging { String className = stack[i].getClassName(); switch (className) { case "java.lang.System$Logger": + case "java.util.logging.Logger": case "org.apache.commons.logging.Log": case "org.osgi.service.log.Logger": case "org.argeo.cms.Log": + case "org.slf4j.impl.ArgeoLogger": + case "org.eclipse.jetty.util.log.Slf4jLog": lowestLoggerInterface = i; continue stack; default: diff --git a/org.argeo.transition/.classpath b/org.argeo.transition/.classpath new file mode 100644 index 000000000..e801ebfb4 --- /dev/null +++ b/org.argeo.transition/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/org.argeo.transition/.project b/org.argeo.transition/.project new file mode 100644 index 000000000..1c1172e99 --- /dev/null +++ b/org.argeo.transition/.project @@ -0,0 +1,28 @@ + + + org.argeo.transition + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/org.argeo.transition/bnd.bnd b/org.argeo.transition/bnd.bnd new file mode 100644 index 000000000..66c0c1b30 --- /dev/null +++ b/org.argeo.transition/bnd.bnd @@ -0,0 +1,2 @@ +Import-Package: \ +*;resolution:=optional diff --git a/org.argeo.transition/build.properties b/org.argeo.transition/build.properties new file mode 100644 index 000000000..34d2e4d2d --- /dev/null +++ b/org.argeo.transition/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/org.argeo.transition/pom.xml b/org.argeo.transition/pom.xml new file mode 100644 index 000000000..eac492209 --- /dev/null +++ b/org.argeo.transition/pom.xml @@ -0,0 +1,22 @@ + + + 4.0.0 + + org.argeo.commons + 2.3-SNAPSHOT + argeo-commons + .. + + org.argeo.transition + jar + Legacy transition + + + org.argeo.commons + org.argeo.api + 2.3-SNAPSHOT + + + + + \ No newline at end of file diff --git a/org.argeo.transition/src/org/slf4j/impl/ArgeoLogger.java b/org.argeo.transition/src/org/slf4j/impl/ArgeoLogger.java new file mode 100644 index 000000000..676303750 --- /dev/null +++ b/org.argeo.transition/src/org/slf4j/impl/ArgeoLogger.java @@ -0,0 +1,181 @@ +package org.slf4j.impl; + +import org.apache.commons.logging.Log; +import org.slf4j.helpers.MarkerIgnoringBase; + +class ArgeoLogger extends MarkerIgnoringBase { + private static final long serialVersionUID = -7719157836932627307L; + private final Log log; + + protected ArgeoLogger(String name, Log log) { + this.name = name; + this.log = log; + } + + @Override + public boolean isDebugEnabled() { + return log.isDebugEnabled(); + } + + @Override + public boolean isTraceEnabled() { + return log.isDebugEnabled(); + } + + @Override + public void trace(String msg) { + log.trace(msg); + + } + + @Override + public void trace(String format, Object... arguments) { + log.trace(format, arguments); + + } + + @Override + public void trace(String msg, Throwable t) { + log.trace(msg, t); + + } + + @Override + public void debug(String msg) { + log.debug(msg); + + } + + @Override + public void debug(String format, Object... arguments) { + log.debug(format, arguments); + + } + + @Override + public void debug(String msg, Throwable t) { + log.debug(msg, t); + + } + + @Override + public boolean isInfoEnabled() { + return log.isInfoEnabled(); + } + + @Override + public void info(String msg) { + log.info(msg); + + } + + @Override + public void info(String format, Object... arguments) { + log.info(format, arguments); + } + + @Override + public void info(String msg, Throwable t) { + log.info(msg, t); + + } + + @Override + public boolean isWarnEnabled() { + return log.isWarnEnabled(); + } + + @Override + public void warn(String msg) { + log.warn(msg); + + } + + @Override + public void warn(String format, Object... arguments) { + log.warn(format, arguments); + + } + + @Override + public void warn(String msg, Throwable t) { + log.warn(msg, t); + + } + + @Override + public boolean isErrorEnabled() { + + return log.isErrorEnabled(); + } + + @Override + public void error(String msg) { + log.error(msg); + + } + + @Override + public void error(String format, Object... arguments) { + log.error(format, arguments); + + } + + @Override + public void error(String msg, Throwable t) { + log.error(msg, t); + + } + + @Override + public void trace(String format, Object arg) { + trace(format, new Object[] { arg }); + + } + + @Override + public void trace(String format, Object arg1, Object arg2) { + trace(format, new Object[] { arg1, arg2 }); + } + + @Override + public void debug(String format, Object arg) { + debug(format, new Object[] { arg }); + } + + @Override + public void debug(String format, Object arg1, Object arg2) { + debug(format, new Object[] { arg1, arg2 }); + } + + @Override + public void info(String format, Object arg) { + info(format, new Object[] { arg }); + } + + @Override + public void info(String format, Object arg1, Object arg2) { + info(format, new Object[] { arg1, arg2 }); + } + + @Override + public void warn(String format, Object arg) { + warn(format, new Object[] { arg }); + } + + @Override + public void warn(String format, Object arg1, Object arg2) { + warn(format, new Object[] { arg1, arg2 }); + } + + @Override + public void error(String format, Object arg) { + error(format, new Object[] { arg }); + } + + @Override + public void error(String format, Object arg1, Object arg2) { + error(format, new Object[] { arg1, arg2 }); + } + +} \ No newline at end of file diff --git a/org.argeo.transition/src/org/slf4j/impl/StaticLoggerBinder.java b/org.argeo.transition/src/org/slf4j/impl/StaticLoggerBinder.java new file mode 100644 index 000000000..19943a157 --- /dev/null +++ b/org.argeo.transition/src/org/slf4j/impl/StaticLoggerBinder.java @@ -0,0 +1,43 @@ +package org.slf4j.impl; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.slf4j.ILoggerFactory; +import org.slf4j.spi.LoggerFactoryBinder; + +public class StaticLoggerBinder implements LoggerFactoryBinder { + public static final String REQUESTED_API_VERSION = "1.7"; + + private static final StaticLoggerBinder SINGLETON = new StaticLoggerBinder(); + + private final ILoggerFactory loggerFactory; + + protected StaticLoggerBinder() { + loggerFactory = new SystemLoggerFactory(); + } + + @Override + public ILoggerFactory getLoggerFactory() { + return loggerFactory; + } + + @Override + public String getLoggerFactoryClassStr() { + return SystemLoggerFactory.class.getName(); + } + + public static final StaticLoggerBinder getSingleton() { + return SINGLETON; + } + + static class SystemLoggerFactory implements ILoggerFactory { + + @Override + public org.slf4j.Logger getLogger(String name) { + Log logger = LogFactory.getLog(name); + return new ArgeoLogger(name, logger); + } + + } + +} diff --git a/pom.xml b/pom.xml index d199b7ec1..bb8807177 100644 --- a/pom.xml +++ b/pom.xml @@ -23,16 +23,17 @@ org.argeo.init org.argeo.enterprise - + org.argeo.swt.specific.rap org.argeo.api + org.argeo.transition org.argeo.cms org.argeo.cms.swt org.argeo.cms.jcr - + org.argeo.cms.ui org.argeo.cms.ui.rap -- 2.30.2