From 992ab73c32bad642ece154f6faee94f318eaf496 Mon Sep 17 00:00:00 2001
From: Gwenaelle Abeille <gwenaelle.abeille@synchrotron-soleil.fr>
Date: Thu, 15 Dec 2011 17:14:11 +0000
Subject: [PATCH] release

---
 .classpath                                    |   1 +
 pom.xml                                       |   9 +-
 .../Archiver/Collector/ArchiverCollector.java |  26 ++--
 .../Common/Watcher/AbsArchivingWatcher.java   |  35 +++--
 .../java/HdbArchiver/Collector/DbProxy.java   |  55 ++++---
 .../HdbArchiver/Collector/HdbCollector.java   |  19 +--
 .../Collector/HdbCollectorFactory.java        |  64 ++++----
 .../HdbArchiver/Collector/image/Image_RO.java |  37 +++--
 .../Collector/scalar/BooleanScalar.java       |  23 +--
 .../Collector/scalar/BooleanScalar_RO.java    |  51 +++----
 .../Collector/scalar/BooleanScalar_RW.java    |  52 +++----
 .../Collector/scalar/BooleanScalar_WO.java    |  44 +++---
 .../Collector/scalar/NumberScalar.java        |  27 ++--
 .../Collector/scalar/NumberScalar_RO.java     |  10 +-
 .../Collector/scalar/NumberScalar_RW.java     |  11 +-
 .../Collector/scalar/NumberScalar_WO.java     |  11 +-
 .../Collector/scalar/StateScalar.java         |  23 ++-
 .../Collector/scalar/StateScalar_RO.java      |  11 +-
 .../Collector/scalar/StringScalar.java        |  22 +--
 .../Collector/scalar/StringScalar_RO.java     |  43 +++---
 .../Collector/scalar/StringScalar_RW.java     |  50 +++----
 .../Collector/scalar/StringScalar_WO.java     |  44 +++---
 .../spectrum/BooleanSpectrum_RO.java          |  11 +-
 .../spectrum/BooleanSpectrum_RW.java          |  11 +-
 .../Collector/spectrum/NumberSpectrum_RO.java |  11 +-
 .../Collector/spectrum/NumberSpectrum_RW.java |  11 +-
 .../Collector/spectrum/StringSpectrum_RO.java |  11 +-
 .../Collector/spectrum/StringSpectrum_RW.java |   9 +-
 src/main/java/HdbArchiver/HdbArchiver.java    | 138 +++++++++---------
 .../HdbArchivingWatcher.java                  |   5 +-
 src/main/java/HdbExtractor/HdbExtractor.java  |  25 +++-
 .../java/TdbArchiver/Collector/DbProxy.java   |  21 +--
 .../TdbArchiver/Collector/TdbCollector.java   |  34 ++---
 .../Collector/TdbCollectorFactory.java        |  31 ++--
 .../Collector/Tools/FileTools.java            |  67 ++++-----
 .../TdbArchiver/Collector/image/Image_RO.java |   6 +-
 .../Collector/scalar/BooleanScalar.java       |  20 +--
 .../Collector/scalar/NumberScalar.java        |  19 +--
 .../Collector/scalar/StateScalar.java         |  20 +--
 .../Collector/scalar/StringScalar.java        |  19 +--
 .../Collector/spectrum/BooleanSpectrum.java   |   6 +-
 .../Collector/spectrum/NumberSpectrum.java    |   6 +-
 .../Collector/spectrum/StringSpectrum.java    |   5 +-
 src/main/java/TdbArchiver/TdbArchiver.java    |  80 +++++-----
 .../TdbArchivingWatcher.java                  |   5 +-
 src/main/java/TdbExtractor/TdbExtractor.java  |  22 ++-
 .../soleil/archiving/utils/LoggingUtils.java  |  48 ++++++
 src/main/resources/log4j.xml                  | 110 ++++++++++++++
 src/test/resources/log4j.xml                  |  10 ++
 49 files changed, 785 insertions(+), 644 deletions(-)
 create mode 100644 src/main/java/fr/soleil/archiving/utils/LoggingUtils.java
 create mode 100644 src/main/resources/log4j.xml
 create mode 100644 src/test/resources/log4j.xml

diff --git a/.classpath b/.classpath
index bfbe1725..3f8b7611 100644
--- a/.classpath
+++ b/.classpath
@@ -2,6 +2,7 @@
 <classpath>
 	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
 	<classpathentry excluding="**" including="**/*.java" kind="src" output="target/classes" path="src/main/resources"/>
+	<classpathentry kind="src" path="src/test/resources"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
 	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
 	<classpathentry kind="output" path="target/classes"/>
diff --git a/pom.xml b/pom.xml
index fc320329..43724108 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
 	<artifactId>hdbtdbArchivingServers</artifactId>
 	<name>hdbtdbArchivingServers</name>
 
-	<version>2.3.3-SNAPSHOT</version>
+	<version>2.3.3</version>
 
 	<scm>
 		<connection>${scm.connection.svn.tango-cs}:archiving/server/hdbtdbArchivingServers</connection>
@@ -40,7 +40,7 @@
 	<dependencies>
 		<dependency>
 			<groupId>org.tango</groupId>
-			<artifactId>TangORB-javadao</artifactId>
+			<artifactId>TangORB</artifactId>
 		</dependency>
 		<dependency>
 			<groupId>org.tango</groupId>
@@ -58,5 +58,10 @@
 			<groupId>fr.soleil.lib</groupId>
 			<artifactId>hdbtdbArchivingApi</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-log4j12</artifactId>
+			<version>1.6.1</version>
+		</dependency>
 	</dependencies>
 </project>
diff --git a/src/main/java/Common/Archiver/Collector/ArchiverCollector.java b/src/main/java/Common/Archiver/Collector/ArchiverCollector.java
index ca3561b7..9c77f575 100644
--- a/src/main/java/Common/Archiver/Collector/ArchiverCollector.java
+++ b/src/main/java/Common/Archiver/Collector/ArchiverCollector.java
@@ -6,11 +6,12 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.slf4j.Logger;
+
 import fr.esrf.TangoDs.Util;
 import fr.esrf.tangoatk.core.AttributePolledList;
 import fr.esrf.tangoatk.core.ErrorEvent;
 import fr.esrf.tangoatk.core.IAttribute;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 
 public abstract class ArchiverCollector {
@@ -23,7 +24,7 @@ public abstract class ArchiverCollector {
     // This hashtable contains the mode counters by attribute
     private final Map<String, ModesCounters> attributeModeCounterMap = new HashMap<String, ModesCounters>();
     // Diary file
-    protected fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger logger;
+    protected final Logger logger;
 
     /**
      * An ModeHandler is associated to each Collector to handle the archiving
@@ -36,19 +37,16 @@ public abstract class ArchiverCollector {
      */
     private boolean refreshing;
 
-    public ArchiverCollector(ModeHandler modeHandler) {
+    public ArchiverCollector(ModeHandler modeHandler, Logger logger) {
 	m_modeHandler = modeHandler;
-    }
-
-    public void setDiaryLogger(ILogger _logger) {
-	this.logger = _logger;
+	this.logger = logger;
     }
 
     /* Allows to indicate to the collector that a new attribute must be managed */
     protected synchronized void addAttribute(String name) {
 	String lower = name.toLowerCase();
 	if (attributeModeCounterMap.containsKey(lower)) {
-	    logger.trace(ILogger.LEVEL_WARNING, "ArchiverCollector.addAttribute : The attribute " + name
+	    logger.debug("ArchiverCollector.addAttribute : The attribute " + name
 		    + "already exists in the map ==> Counter Re-init");
 	    attributeModeCounterMap.get(lower).init();
 	} else {
@@ -88,8 +86,8 @@ public abstract class ArchiverCollector {
 	    doArchive = m_modeHandler.isDataArchivable(mc, dataType, readValueObject, lastValueObject);
 	} catch (Exception e) {
 	    e.printStackTrace();
-	    this.logger.trace(ILogger.LEVEL_ERROR, this.getClass().getSimpleName() + "/doArchiveEvent/catch " + e
-		    + " with the value of " + attCompleteName);
+	    logger.error(this.getClass().getSimpleName() + "/doArchiveEvent/catch " + e + " with the value of "
+		    + attCompleteName);
 	}
 
 	return doArchive;
@@ -105,12 +103,11 @@ public abstract class ArchiverCollector {
 		attributeList.setSynchronizedPeriod(true);
 		attributeList.startRefresher();
 		refreshing = true;
-		logger.trace(ILogger.LEVEL_DEBUG, this.getClass() + " start refresh for " + attributeList.getSize()
-			+ " attributes");
+		logger.debug(this.getClass() + " start refresh for " + attributeList.getSize() + " attributes");
 	    } else {
 		// force a refresh for newly added attributes
 		attributeList.refresh();
-		logger.trace(ILogger.LEVEL_DEBUG, "FORCING refresh for " + this.getClass());
+		logger.debug("FORCING refresh for " + this.getClass());
 	    }
 	}
     }
@@ -120,8 +117,7 @@ public abstract class ArchiverCollector {
      */
     protected synchronized void stopCollecting() {
 	try {
-	    logger.trace(ILogger.LEVEL_DEBUG, this.getClass() + " stop refresh on " + attributeList.getSize()
-		    + " attributes");
+	    logger.debug(this.getClass() + " stop refresh on " + attributeList.getSize() + " attributes");
 	    attributeList.stopRefresher();
 	    refreshing = false;
 	} catch (final Exception e) {
diff --git a/src/main/java/Common/Watcher/AbsArchivingWatcher.java b/src/main/java/Common/Watcher/AbsArchivingWatcher.java
index c87c6cc2..1db9083b 100644
--- a/src/main/java/Common/Watcher/AbsArchivingWatcher.java
+++ b/src/main/java/Common/Watcher/AbsArchivingWatcher.java
@@ -1,5 +1,6 @@
 package Common.Watcher;
 
+import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.util.ArrayList;
@@ -9,6 +10,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
+import org.slf4j.Logger;
 import org.tango.utils.DevFailedUtils;
 
 import fr.esrf.Tango.DevFailed;
@@ -19,8 +21,7 @@ import fr.esrf.TangoDs.DeviceImpl;
 import fr.esrf.TangoDs.Except;
 import fr.esrf.TangoDs.TangoConst;
 import fr.esrf.TangoDs.Util;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.LoggerFactory;
+import fr.soleil.archiving.utils.LoggingUtils;
 import fr.soleil.hdbtdbArchivingApi.ArchivingWatchApi.ArchivingWatch;
 import fr.soleil.hdbtdbArchivingApi.ArchivingWatchApi.datasources.db.DBReaderFactory;
 import fr.soleil.hdbtdbArchivingApi.ArchivingWatchApi.datasources.db.IDBReader;
@@ -182,7 +183,7 @@ public abstract class AbsArchivingWatcher extends DeviceImpl implements TangoCon
     // private int faultsCounter = 0;
 
     // Add your own data members here
-    protected ILogger logger;
+    protected Logger logger;
 
     private LifeCycleManager lifeCycleManager;
 
@@ -217,7 +218,13 @@ public abstract class AbsArchivingWatcher extends DeviceImpl implements TangoCon
 	} else {
 	    dbReader = DBReaderFactory.getImpl(DBReaderFactory.TDB);
 	}
-	startLoggingFactory();
+	try {
+	    logger = LoggingUtils.configureLogging(device_name, ArchivingWatch.isHasDiary(),
+		    ArchivingWatch.getDiaryPath(), ArchivingWatch.getDiaryLogLevel());
+	} catch (IOException e) {
+	    DevFailedUtils.throwDevFailed(e);
+	}
+	// startLoggingFactory();
     }
 
     @Override
@@ -225,15 +232,17 @@ public abstract class AbsArchivingWatcher extends DeviceImpl implements TangoCon
 
     protected abstract DbDatum getClassProperty(String name);
 
-    private void startLoggingFactory() {
-	// System.out.println (
-	// "CLA/startLoggingFactory/this.device_name/"+this.device_name+"/hashCode/"+this.hashCode
-	// ()+"/this.hasDiary/"+this.hasDiary );
-
-	logger = LoggerFactory.getImpl(device_name, ArchivingWatch.getDiaryPath(), ArchivingWatch.isHasDiary());
-	logger.setTraceLevel(ArchivingWatch.getDiaryLogLevel());
-
-    }
+    // private void startLoggingFactory() {
+    // // System.out.println (
+    // //
+    // "CLA/startLoggingFactory/this.device_name/"+this.device_name+"/hashCode/"+this.hashCode
+    // // ()+"/this.hasDiary/"+this.hasDiary );
+    //
+    // // logger = LoggerFactory.getImpl(device_name,
+    // // ArchivingWatch.getDiaryPath(), ArchivingWatch.isHasDiary());
+    // // logger.setTraceLevel(ArchivingWatch.getDiaryLogLevel());
+    //
+    // }
 
     /**
      * @param result
diff --git a/src/main/java/HdbArchiver/Collector/DbProxy.java b/src/main/java/HdbArchiver/Collector/DbProxy.java
index 4bf3e578..a6f9fd54 100644
--- a/src/main/java/HdbArchiver/Collector/DbProxy.java
+++ b/src/main/java/HdbArchiver/Collector/DbProxy.java
@@ -126,12 +126,13 @@ import java.sql.Timestamp;
 import java.util.Hashtable;
 import java.util.Vector;
 
+import org.slf4j.Logger;
+
 import fr.esrf.Tango.DevError;
 import fr.esrf.Tango.DevFailed;
 import fr.esrf.Tango.ErrSeverity;
 import fr.esrf.TangoApi.Database;
 import fr.esrf.TangoDs.Util;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingApi.ConfigConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingApi.HDBDataBaseManager;
@@ -152,33 +153,30 @@ import fr.soleil.hdbtdbArchivingApi.ArchivingWatchApi.strategy.control.safetyper
 import fr.soleil.hdbtdbArchivingApi.ArchivingWatchApi.strategy.control.safetyperiod.SaferPeriodCalculatorFactory;
 
 public class DbProxy implements IDbProxy {
-    private Hashtable<String, Integer> periods;
-    private Hashtable<String, Long> counters;
-    private Hashtable<String, Long> lastInserts;
-    private Hashtable<String, Long> lastInsertRequests;
-
-    private IArchivingManagerApiRef manager;
-    private IHdbAttributeInsert inserter;
-
-    private fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger logger;
+    private final Hashtable<String, Integer> periods;
+    private final Hashtable<String, Long> counters;
+    private final Hashtable<String, Long> lastInserts;
+    private final Hashtable<String, Long> lastInsertRequests;
+
+    private final IArchivingManagerApiRef manager;
+    private final IHdbAttributeInsert inserter;
+
+    private final Logger logger;
+
+    public DbProxy(final String myDbHost, final String myDbName, final String mySchemaName, final String myDbUser,
+	    final String myDbPassword, final boolean myRacConnection, Logger logger) throws ArchivingException {
+	this.logger = logger;
+
+	manager = ArchivingManagerApiRefFactory.getInstance(ConfigConst.HDB);
+	manager.ArchivingConfigureWithoutArchiverListInit(myDbHost, myDbName, mySchemaName, myDbUser, myDbPassword,
+		myRacConnection, false, false);
+	inserter = ((HDBDataBaseManager) manager.getDataBase()).getHdbAttributeInsert(logger);
+	periods = new Hashtable<String, Integer>();
+	counters = new Hashtable<String, Long>();
+	lastInserts = new Hashtable<String, Long>();
+	lastInsertRequests = new Hashtable<String, Long>();
+	ArchivingWatch.setDbProxy(this);
 
-    public DbProxy(final ILogger logger, final String myDbHost, final String myDbName, final String mySchemaName,
-	    final String myDbUser, final String myDbPassword, final boolean myRacConnection) {
-	try {
-	    manager = ArchivingManagerApiRefFactory.getInstance(ConfigConst.HDB);
-	    manager.ArchivingConfigureWithoutArchiverListInit(myDbHost, myDbName, mySchemaName, myDbUser, myDbPassword,
-		    myRacConnection, false, false);
-	    inserter = ((HDBDataBaseManager) manager.getDataBase()).getHdbAttributeInsert();
-	    periods = new Hashtable<String, Integer>();
-	    counters = new Hashtable<String, Long>();
-	    lastInserts = new Hashtable<String, Long>();
-	    lastInsertRequests = new Hashtable<String, Long>();
-	    this.logger = logger;
-	    inserter.setLogger(this.logger);
-	    ArchivingWatch.setDbProxy(this);
-	} catch (final ArchivingException e) {
-	    System.err.println(e.toString());
-	}
     }
 
     public boolean is_db_connected() {
@@ -202,8 +200,7 @@ public class DbProxy implements IDbProxy {
 	    inserter.insert_ScalarData(scalarEvent);
 	    updateCountersForAttributePostInsert(scalarEvent);
 	} catch (final ArchivingException e) {
-	    logger.trace(ILogger.LEVEL_ERROR, "Error during scalar insertion " + scalarEvent);
-	    logger.trace(ILogger.LEVEL_ERROR, e.toString());
+	    logger.error("Error during scalar insertion - {}", scalarEvent, e);
 	    throw e;
 	}
     }
diff --git a/src/main/java/HdbArchiver/Collector/HdbCollector.java b/src/main/java/HdbArchiver/Collector/HdbCollector.java
index 56752fbf..ce76583c 100644
--- a/src/main/java/HdbArchiver/Collector/HdbCollector.java
+++ b/src/main/java/HdbArchiver/Collector/HdbCollector.java
@@ -125,12 +125,13 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.slf4j.Logger;
+
 import Common.Archiver.Collector.ArchiverCollector;
 import HdbArchiver.HdbArchiver;
 import fr.esrf.Tango.DevFailed;
 import fr.esrf.TangoDs.Util;
 import fr.esrf.tangoatk.core.ErrorEvent;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingEvent;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.AttributeLightMode;
@@ -168,8 +169,8 @@ public abstract class HdbCollector extends ArchiverCollector {
     // ELETTRA : Archiving Events
     // --------------------------------------------------------------------------//
 
-    public HdbCollector(final HdbModeHandler _modeHandler) {
-	super(_modeHandler);
+    public HdbCollector(final HdbModeHandler _modeHandler, Logger logger) {
+	super(_modeHandler, logger);
     }
 
     protected abstract void addSourceForPolling(final AttributeLightMode attributeLightMode) throws ArchivingException;
@@ -248,8 +249,8 @@ public abstract class HdbCollector extends ArchiverCollector {
 
 	final long newTime = archivingEvent.getTimeStamp();
 	if (newTime == 0) {
-	    logger.trace(ILogger.LEVEL_WARNING, "NOARCHIVING - received a zero timestamp for " + name
-		    + " - tableName: " + archivingEvent.getTable_name());
+	    logger.debug("NOARCHIVING - received a zero timestamp for " + name + " - tableName: "
+		    + archivingEvent.getTable_name());
 	    return false;
 	}
 
@@ -258,11 +259,11 @@ public abstract class HdbCollector extends ArchiverCollector {
 	    return true;
 	}
 
-	final boolean isAlreadyRegisteredDate = lastTimestampStack.containsDate(newTime, logger);
-	final boolean isValidDate = lastTimestampStack.validateDate(newTime, logger);
+	final boolean isAlreadyRegisteredDate = lastTimestampStack.containsDate(newTime);
+	final boolean isValidDate = lastTimestampStack.validateDate(newTime);
 	if (isAlreadyRegisteredDate || !isValidDate) {
-	    logger.trace(ILogger.LEVEL_DEBUG, "NOARCHIVING - AlreadyRegisteredDate - attribute: " + name
-		    + " - timestamp: " + new Timestamp(newTime));
+	    logger.debug("NOARCHIVING - AlreadyRegisteredDate - attribute: " + name + " - timestamp: "
+		    + new Timestamp(newTime));
 	    return false;
 	}
 
diff --git a/src/main/java/HdbArchiver/Collector/HdbCollectorFactory.java b/src/main/java/HdbArchiver/Collector/HdbCollectorFactory.java
index 575850a3..4644a17b 100644
--- a/src/main/java/HdbArchiver/Collector/HdbCollectorFactory.java
+++ b/src/main/java/HdbArchiver/Collector/HdbCollectorFactory.java
@@ -122,6 +122,8 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
+import org.slf4j.Logger;
+
 import HdbArchiver.Collector.Tools.SuperMode;
 import HdbArchiver.Collector.image.Image_RO;
 import HdbArchiver.Collector.scalar.BooleanScalar_RO;
@@ -144,7 +146,6 @@ import fr.esrf.Tango.AttrDataFormat;
 import fr.esrf.Tango.AttrWriteType;
 import fr.esrf.Tango.ErrSeverity;
 import fr.esrf.TangoDs.TangoConst;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.AttributeLightMode;
@@ -152,8 +153,10 @@ import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.AttributeSupport;
 
 public class HdbCollectorFactory {
     private final Map<SuperMode, HdbCollector> tableCollector = new HashMap<SuperMode, HdbCollector>();
+    private final Logger logger;
 
-    public HdbCollectorFactory() {
+    public HdbCollectorFactory(Logger logger) {
+	this.logger = logger;
     }
 
     /**
@@ -189,22 +192,21 @@ public class HdbCollectorFactory {
      * @param attributeLightMode
      *            Attribute associated to the looked collector.
      */
-    public void createCollectorAndAddSource(final AttributeLightMode attributeLightMode, final ILogger logger,
-	    final DbProxy dbProxy) throws ArchivingException {
+    public void createCollectorAndAddSource(final AttributeLightMode attributeLightMode, final DbProxy dbProxy)
+	    throws ArchivingException {
 
-	logger.trace(ILogger.LEVEL_DEBUG, "createCollectorAndAddSource for " + attributeLightMode);
+	logger.trace("createCollectorAndAddSource for " + attributeLightMode);
 	final SuperMode superMode = new SuperMode(attributeLightMode.getData_format(),
 		attributeLightMode.getData_type(), attributeLightMode.getWritable(), attributeLightMode.getMode());
 	HdbCollector collector = tableCollector.get(superMode);
 	if (collector == null) {
-	    logger.trace(ILogger.LEVEL_DEBUG, "new collector ");
+	    logger.trace("new collector ");
 	    try {
 		collector = create(attributeLightMode);
 	    } catch (final ArchivingException e) {
 		throw e;
 	    }
 	    collector.setDbProxy(dbProxy);
-	    collector.setDiaryLogger(logger);
 
 	    try {
 		collector.addSource(attributeLightMode);
@@ -215,7 +217,7 @@ public class HdbCollectorFactory {
 	    tableCollector.put(superMode, collector);
 
 	} else {
-	    logger.trace(ILogger.LEVEL_DEBUG, "use existing collector " + collector.assessment());
+	    logger.trace("use existing collector " + collector.assessment());
 	    collector.addSource(attributeLightMode);
 	}
     }
@@ -265,16 +267,16 @@ public class HdbCollectorFactory {
 		    case TangoConst.Tango_DEV_UCHAR:
 		    case TangoConst.Tango_DEV_ULONG64:
 		    case TangoConst.Tango_DEV_LONG64:
-			collector = new NumberScalar_RO(modeHandler);
+			collector = new NumberScalar_RO(modeHandler, logger);
 			break;
 		    case TangoConst.Tango_DEV_BOOLEAN:
-			collector = new BooleanScalar_RO(modeHandler);
+			collector = new BooleanScalar_RO(modeHandler, logger);
 			break;
 		    case TangoConst.Tango_DEV_STATE:
-			collector = new StateScalar_RO(modeHandler);
+			collector = new StateScalar_RO(modeHandler, logger);
 			break;
 		    case TangoConst.Tango_DEV_STRING:
-			collector = new StringScalar_RO(modeHandler);
+			collector = new StringScalar_RO(modeHandler, logger);
 			break;
 
 		    default:
@@ -292,13 +294,13 @@ public class HdbCollectorFactory {
 		    case TangoConst.Tango_DEV_UCHAR:
 		    case TangoConst.Tango_DEV_ULONG64:
 		    case TangoConst.Tango_DEV_LONG64:
-			collector = new NumberScalar_RW(modeHandler);
+			collector = new NumberScalar_RW(modeHandler, logger);
 			break;
 		    case TangoConst.Tango_DEV_BOOLEAN:
-			collector = new BooleanScalar_RW(modeHandler);
+			collector = new BooleanScalar_RW(modeHandler, logger);
 			break;
 		    case TangoConst.Tango_DEV_STRING:
-			collector = new StringScalar_RW(modeHandler);
+			collector = new StringScalar_RW(modeHandler, logger);
 			break;
 		    case TangoConst.Tango_DEV_STATE:
 		    default:
@@ -316,13 +318,13 @@ public class HdbCollectorFactory {
 		    case TangoConst.Tango_DEV_UCHAR:
 		    case TangoConst.Tango_DEV_ULONG64:
 		    case TangoConst.Tango_DEV_LONG64:
-			collector = new NumberScalar_WO(modeHandler);
+			collector = new NumberScalar_WO(modeHandler, logger);
 			break;
 		    case TangoConst.Tango_DEV_BOOLEAN:
-			collector = new BooleanScalar_WO(modeHandler);
+			collector = new BooleanScalar_WO(modeHandler, logger);
 			break;
 		    case TangoConst.Tango_DEV_STRING:
-			collector = new StringScalar_WO(modeHandler);
+			collector = new StringScalar_WO(modeHandler, logger);
 			break;
 		    case TangoConst.Tango_DEV_STATE:
 		    default:
@@ -340,13 +342,13 @@ public class HdbCollectorFactory {
 		    case TangoConst.Tango_DEV_UCHAR:
 		    case TangoConst.Tango_DEV_ULONG64:
 		    case TangoConst.Tango_DEV_LONG64:
-			collector = new NumberScalar_RW(modeHandler);
+			collector = new NumberScalar_RW(modeHandler, logger);
 			break;
 		    case TangoConst.Tango_DEV_BOOLEAN:
-			collector = new BooleanScalar_RW(modeHandler);
+			collector = new BooleanScalar_RW(modeHandler, logger);
 			break;
 		    case TangoConst.Tango_DEV_STRING:
-			collector = new StringScalar_RW(modeHandler);
+			collector = new StringScalar_RW(modeHandler, logger);
 			break;
 		    case TangoConst.Tango_DEV_STATE:
 		    default:
@@ -373,13 +375,13 @@ public class HdbCollectorFactory {
 		    case TangoConst.Tango_DEV_UCHAR:
 		    case TangoConst.Tango_DEV_ULONG64:
 		    case TangoConst.Tango_DEV_LONG64:
-			collector = new NumberSpectrum_RO(modeHandler);
+			collector = new NumberSpectrum_RO(modeHandler, logger);
 			break;
 		    case TangoConst.Tango_DEV_BOOLEAN:
-			collector = new BooleanSpectrum_RO(modeHandler);
+			collector = new BooleanSpectrum_RO(modeHandler, logger);
 			break;
 		    case TangoConst.Tango_DEV_STRING:
-			collector = new StringSpectrum_RO(modeHandler);
+			collector = new StringSpectrum_RO(modeHandler, logger);
 			break;
 
 		    default:
@@ -397,13 +399,13 @@ public class HdbCollectorFactory {
 		    case TangoConst.Tango_DEV_UCHAR:
 		    case TangoConst.Tango_DEV_ULONG64:
 		    case TangoConst.Tango_DEV_LONG64:
-			collector = new NumberSpectrum_RO(modeHandler);
+			collector = new NumberSpectrum_RO(modeHandler, logger);
 			break;
 		    case TangoConst.Tango_DEV_BOOLEAN:
-			collector = new BooleanSpectrum_RO(modeHandler);
+			collector = new BooleanSpectrum_RO(modeHandler, logger);
 			break;
 		    case TangoConst.Tango_DEV_STRING:
-			collector = new StringSpectrum_RO(modeHandler);
+			collector = new StringSpectrum_RO(modeHandler, logger);
 			break;
 		    default:
 			generateException(GlobalConst.DATA_TYPE_EXCEPTION, data_type, name);
@@ -424,13 +426,13 @@ public class HdbCollectorFactory {
 
 		    case TangoConst.Tango_DEV_ULONG64:
 		    case TangoConst.Tango_DEV_STATE:
-			collector = new NumberSpectrum_RW(modeHandler);
+			collector = new NumberSpectrum_RW(modeHandler, logger);
 			break;
 		    case TangoConst.Tango_DEV_BOOLEAN:
-			collector = new BooleanSpectrum_RW(modeHandler);
+			collector = new BooleanSpectrum_RW(modeHandler, logger);
 			break;
 		    case TangoConst.Tango_DEV_STRING:
-			collector = new StringSpectrum_RW(modeHandler);
+			collector = new StringSpectrum_RW(modeHandler, logger);
 			break;
 
 		    default:
@@ -440,7 +442,7 @@ public class HdbCollectorFactory {
 		}
 		break;
 	    case AttrDataFormat._IMAGE: // IMAGE
-		collector = new Image_RO(modeHandler);
+		collector = new Image_RO(modeHandler, logger);
 		break;
 	    default:
 		generateException(GlobalConst.DATA_FORMAT_EXCEPTION, data_format, name);
diff --git a/src/main/java/HdbArchiver/Collector/image/Image_RO.java b/src/main/java/HdbArchiver/Collector/image/Image_RO.java
index 66efdac4..06a2c569 100644
--- a/src/main/java/HdbArchiver/Collector/image/Image_RO.java
+++ b/src/main/java/HdbArchiver/Collector/image/Image_RO.java
@@ -87,6 +87,8 @@
 
 package HdbArchiver.Collector.image;
 
+import org.slf4j.Logger;
+
 import HdbArchiver.Collector.HdbCollector;
 import HdbArchiver.Collector.HdbModeHandler;
 import fr.esrf.Tango.ErrSeverity;
@@ -97,7 +99,6 @@ import fr.esrf.tangoatk.core.ErrorEvent;
 import fr.esrf.tangoatk.core.IImageListener;
 import fr.esrf.tangoatk.core.INumberImage;
 import fr.esrf.tangoatk.core.NumberImageEvent;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.AttributeLightMode;
@@ -106,8 +107,8 @@ import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ImageEvent_RO;
 public class Image_RO extends HdbCollector implements IImageListener {
     private static final long serialVersionUID = 8000955241L;
 
-    public Image_RO(final HdbModeHandler hdbModeHandler) {
-	super(hdbModeHandler);
+    public Image_RO(final HdbModeHandler hdbModeHandler, Logger logger) {
+	super(hdbModeHandler, logger);
     }
 
     @Override
@@ -134,8 +135,8 @@ public class Image_RO extends HdbCollector implements IImageListener {
 		}
 	    }
 	} catch (final Exception e) {
-	    final String message = GlobalConst.ARCHIVING_ERROR_PREFIX + " : " + "Failed removing '"
-		    + attributeName + "' from sources";
+	    final String message = GlobalConst.ARCHIVING_ERROR_PREFIX + " : " + "Failed removing '" + attributeName
+		    + "' from sources";
 	    final String reason = GlobalConst.TANGO_COMM_EXCEPTION;
 	    final String desc = "Failed while executing Image_RO.removeSource() method...";
 	    throw new ArchivingException(message, reason, ErrSeverity.WARN, desc, "", e);
@@ -156,6 +157,7 @@ public class Image_RO extends HdbCollector implements IImageListener {
 	processEventImage(imageEvent_ro, tryNumber);
     }
 
+    @Override
     public void imageChange(final NumberImageEvent event) {
 	final int tryNumber = DEFAULT_TRY_NUMBER;
 	final String attribute_name = ((INumberImage) event.getSource()).getName();
@@ -185,6 +187,7 @@ public class Image_RO extends HdbCollector implements IImageListener {
 	processEventImage(imageEvent_RO, tryNumber);
     }
 
+    @Override
     public void stateChange(final AttributeStateEvent event) {
     }
 
@@ -197,45 +200,39 @@ public class Image_RO extends HdbCollector implements IImageListener {
 	}
 
 	try // spectrum values can only have periodic modes, we don't need their
-	// lastValue
+	    // lastValue
 	{
 	    super.dbProxy.store(snapImageEvent_RO);
 	    super.setLastTimestamp(snapImageEvent_RO);
 	} catch (final Exception e) {
 	    final String message = "Problem (ArchivingException) storing Image_RO value";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, e);
+	    logger.error(message, e);
 
 	    try_number--;
 	    if (try_number > 0) {
-		System.out.println("Image_RO.processEventImage : \r\n\ttry " + try_number
-			+ "failed...");
+		System.out.println("Image_RO.processEventImage : \r\n\ttry " + try_number + "failed...");
 		processEventImage(snapImageEvent_RO, try_number);
 	    }
 	}
     }
 
     @Override
-    protected void addSourceForEvents(final AttributeLightMode attributeLightMode)
-	    throws ArchivingException {
+    protected void addSourceForEvents(final AttributeLightMode attributeLightMode) throws ArchivingException {
 	// TODO Auto-generated method stub
 
     }
 
     @Override
-    protected void addSourceForPolling(final AttributeLightMode attributeLightMode)
-	    throws ArchivingException {
+    protected void addSourceForPolling(final AttributeLightMode attributeLightMode) throws ArchivingException {
 	System.out.println("Image_RO.addSource");
 	try {
 	    synchronized (attributeList) {
-		while ((INumberImage) attributeList.get(attributeLightMode
-			.getAttribute_complete_name()) == null) {
-		    final INumberImage attribute = (INumberImage) attributeList
-			    .add(attributeLightMode.getAttribute_complete_name());
+		while ((INumberImage) attributeList.get(attributeLightMode.getAttribute_complete_name()) == null) {
+		    final INumberImage attribute = (INumberImage) attributeList.add(attributeLightMode
+			    .getAttribute_complete_name());
 		    attribute.addImageListener(this);
 		    attribute.addErrorListener(this);
-		    Util.out4.println("\t The attribute named "
-			    + attributeLightMode.getAttribute_complete_name()
+		    Util.out4.println("\t The attribute named " + attributeLightMode.getAttribute_complete_name()
 			    + " was hired to the Collector list...");
 		    if (attributeList.size() == 1) {
 			startCollecting();
diff --git a/src/main/java/HdbArchiver/Collector/scalar/BooleanScalar.java b/src/main/java/HdbArchiver/Collector/scalar/BooleanScalar.java
index 3fd07321..fb726c41 100644
--- a/src/main/java/HdbArchiver/Collector/scalar/BooleanScalar.java
+++ b/src/main/java/HdbArchiver/Collector/scalar/BooleanScalar.java
@@ -92,6 +92,8 @@ package HdbArchiver.Collector.scalar;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.slf4j.Logger;
+
 import Common.Archiver.Collector.ModesCounters;
 import HdbArchiver.HdbArchiver;
 import HdbArchiver.Collector.HdbCollector;
@@ -110,13 +112,13 @@ import fr.esrf.tangoatk.core.ErrorEvent;
 import fr.esrf.tangoatk.core.IBooleanScalar;
 import fr.esrf.tangoatk.core.IBooleanScalarListener;
 import fr.esrf.tangoatk.core.attribute.AttributeFactory;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.AttributeLightMode;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 
 public abstract class BooleanScalar extends HdbCollector implements IBooleanScalarListener, ITangoArchiveListener {
+
     /**
 	 *
 	 */
@@ -124,8 +126,8 @@ public abstract class BooleanScalar extends HdbCollector implements IBooleanScal
 
     private final Map<Device, TangoEventsAdapter> evtAdaptHMap;
 
-    public BooleanScalar(final HdbModeHandler hdbModeHandler) {
-	super(hdbModeHandler);
+    public BooleanScalar(final HdbModeHandler hdbModeHandler, Logger logger) {
+	super(hdbModeHandler, logger);
 
 	evtAdaptHMap = new HashMap<Device, TangoEventsAdapter>();
     }
@@ -184,7 +186,7 @@ public abstract class BooleanScalar extends HdbCollector implements IBooleanScal
 		// informs the mother class that one new attribute must be
 		// managed
 		addAttribute(attName);
-		logger.trace(ILogger.LEVEL_INFO, "add archiving for " + attName);
+		logger.debug("add archiving for " + attName);
 
 	    }
 	} catch (final ConnectionException e) {
@@ -363,11 +365,11 @@ public abstract class BooleanScalar extends HdbCollector implements IBooleanScal
 	    if (isFirstValueList.get(attributeName.toLowerCase())) {
 		doArchive = true;
 		isFirstValueList.put(attributeName.toLowerCase(), false);
-		logger.trace(ILogger.LEVEL_DEBUG, attributeName + " first value, forcing archiving");
+		logger.debug(attributeName + " first value, forcing archiving");
 	    } else {
 		final ModesCounters mc = getModeCounter(attributeName);
 		if (mc == null) {
-		    logger.trace(ILogger.LEVEL_ERROR, attributeName + " Attribute Counters unknown");
+		    logger.debug(attributeName + " Attribute Counters unknown");
 		} else {
 		    doArchive = doArchiveEvent(mc, scalarEvent.getData_type(), scalarEvent.getReadValue(),
 			    getLastValue(scalarEvent), attributeName);
@@ -381,8 +383,7 @@ public abstract class BooleanScalar extends HdbCollector implements IBooleanScal
 	    setLastValue(scalarEvent, scalarEvent.getReadValue());
 	} catch (final Exception e) {
 	    final String message = "Problem storing BooleanScalar value";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, e);
+	    logger.error(message, e);
 
 	    try_number--;
 	    if (try_number > 0) {
@@ -413,14 +414,14 @@ public abstract class BooleanScalar extends HdbCollector implements IBooleanScal
 	final String errorMess = this.getClass().getSimpleName() + ".errorChange : Unable to read the attribute named "
 		+ errorEvent.getSource().toString();
 	Util.out3.println(errorMess);
-	logger.trace(ILogger.LEVEL_ERROR, errorMess);
+	logger.error(errorMess);
 
 	try {
 	    processEventScalar(getNullValueScalarEvent(errorEvent, TangoConst.Tango_DEV_BOOLEAN, getWritableValue()),
 		    DEFAULT_TRY_NUMBER);
 	} catch (final Exception e) {
-	    super.logger.trace(ILogger.LEVEL_ERROR, this.getClass().getSimpleName()
-		    + ".errorChange : during processEventScalar creation execp : " + e);
+	    logger.error(this.getClass().getSimpleName() + ".errorChange : during processEventScalar creation execp : "
+		    + e);
 	    e.printStackTrace();
 	}
     }
diff --git a/src/main/java/HdbArchiver/Collector/scalar/BooleanScalar_RO.java b/src/main/java/HdbArchiver/Collector/scalar/BooleanScalar_RO.java
index cd343da0..f8358a67 100644
--- a/src/main/java/HdbArchiver/Collector/scalar/BooleanScalar_RO.java
+++ b/src/main/java/HdbArchiver/Collector/scalar/BooleanScalar_RO.java
@@ -58,6 +58,8 @@
 
 package HdbArchiver.Collector.scalar;
 
+import org.slf4j.Logger;
+
 import HdbArchiver.Collector.HdbModeHandler;
 import fr.esrf.Tango.AttrDataFormat;
 import fr.esrf.Tango.AttrWriteType;
@@ -68,19 +70,17 @@ import fr.esrf.TangoApi.events.TangoArchive;
 import fr.esrf.TangoApi.events.TangoArchiveEvent;
 import fr.esrf.tangoatk.core.BooleanScalarEvent;
 import fr.esrf.tangoatk.core.IBooleanScalar;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 
 public class BooleanScalar_RO extends BooleanScalar {
-
     /**
 	 *
 	 */
     private static final long serialVersionUID = -2357227053078000202L;
 
-    public BooleanScalar_RO(final HdbModeHandler modeHandler) {
-	super(modeHandler);
+    public BooleanScalar_RO(final HdbModeHandler modeHandler, Logger logger) {
+	super(modeHandler, logger);
     }
 
     @Override
@@ -88,6 +88,7 @@ public class BooleanScalar_RO extends BooleanScalar {
 	return AttrWriteType._READ;
     }
 
+    @Override
     public void booleanScalarChange(final BooleanScalarEvent event) {
 	final ScalarEvent scalarEvent = new ScalarEvent();
 	final int tryNumber = DEFAULT_TRY_NUMBER;
@@ -122,25 +123,22 @@ public class BooleanScalar_RO extends BooleanScalar {
 	    processEventScalar(scalarEvent, tryNumber);
 
 	} catch (final DevFailed devFailed) {
-	    System.err.println("BooleanScalar_RO.numberScalarChange : "
-		    + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values...");
-	    printException(GlobalConst.DATA_TYPE_EXCEPTION, AttrDataFormat._SCALAR, scalarEvent
-		    .getAttribute_complete_name(), devFailed);
+	    System.err.println("BooleanScalar_RO.numberScalarChange : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values...");
+	    printException(GlobalConst.DATA_TYPE_EXCEPTION, AttrDataFormat._SCALAR,
+		    scalarEvent.getAttribute_complete_name(), devFailed);
 	    scalarEvent.setValue(null);
 	    processEventScalar(scalarEvent, tryNumber);
 	} catch (final Exception exE) {
-	    System.err.println("BooleanScalar_RO.numberScalarChange : "
-		    + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values. Event : " + event
+	    System.err.println("BooleanScalar_RO.numberScalarChange : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values. Event : " + event
 		    + ", source " + event.getSource());
 	    exE.printStackTrace();
 	    scalarEvent.setValue(null);
 	    processEventScalar(scalarEvent, tryNumber);
 
 	    final String message = "Problem in BooleanScalar_RO/booleanScalarChange";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, exE);
+	    logger.trace(message, exE);
 	}
 
     }
@@ -154,6 +152,7 @@ public class BooleanScalar_RO extends BooleanScalar {
      * @author giacomo Implements the boolean scalar archive events for the read
      *         only type
      */
+    @Override
     public void archive(final TangoArchiveEvent event) {
 	final int tryNumber = DEFAULT_TRY_NUMBER;
 	DeviceAttribute attrib = null;
@@ -167,16 +166,12 @@ public class BooleanScalar_RO extends BooleanScalar {
 	} catch (final DevFailed f) {
 	    System.out.println("Error getting archive event attribute value");
 	    System.out.println();
-	    printException(
-		    GlobalConst.DATA_TYPE_EXCEPTION,
-		    AttrDataFormat._SCALAR,
-		    "\033[1;31mBooleanScalar_RO.archive.getValue() failed, caught DevFailed\033[0m",
-		    f);
+	    printException(GlobalConst.DATA_TYPE_EXCEPTION, AttrDataFormat._SCALAR,
+		    "\033[1;31mBooleanScalar_RO.archive.getValue() failed, caught DevFailed\033[0m", f);
 	    return;
 	} catch (final Exception e) /* Shouldn't be reached */
 	{
-	    System.out
-		    .println("BooleanScalar_RO.archive.getValue() failed, caught generic Exception, code failure");
+	    System.out.println("BooleanScalar_RO.archive.getValue() failed, caught generic Exception, code failure");
 	    e.printStackTrace();
 	    return;
 	}
@@ -207,22 +202,20 @@ public class BooleanScalar_RO extends BooleanScalar {
 	    bvalue = attrib.extractBoolean();
 	    scalarEvent.setValue(bvalue);
 
-	    System.out.println(proxy.name() + ": " + attrib.getName()
-		    + "{boolean, RO} [\033[1;32mEVENT\033[0m]: " + bvalue);
+	    System.out.println(proxy.name() + ": " + attrib.getName() + "{boolean, RO} [\033[1;32mEVENT\033[0m]: "
+		    + bvalue);
 
 	    processEventScalar(scalarEvent, tryNumber);
 
 	} catch (final DevFailed devFailed) {
-	    print_exception("NumberScalar_RO.archive() : " + GlobalConst.ARCHIVING_ERROR_PREFIX
-		    + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values...", devFailed);
+	    print_exception("NumberScalar_RO.archive() : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values...", devFailed);
 	    final Object value = null;
 	    scalarEvent.setValue(value);
 	    processEventScalar(scalarEvent, tryNumber);
 	} catch (final Exception exE) {
-	    System.err.println("NumberScalar_RO.archive : " + GlobalConst.ARCHIVING_ERROR_PREFIX
-		    + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values...");
+	    System.err.println("NumberScalar_RO.archive : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values...");
 	    exE.printStackTrace();
 	    final Object value = null;
 	    scalarEvent.setValue(value);
diff --git a/src/main/java/HdbArchiver/Collector/scalar/BooleanScalar_RW.java b/src/main/java/HdbArchiver/Collector/scalar/BooleanScalar_RW.java
index 3d7d714d..87043a13 100644
--- a/src/main/java/HdbArchiver/Collector/scalar/BooleanScalar_RW.java
+++ b/src/main/java/HdbArchiver/Collector/scalar/BooleanScalar_RW.java
@@ -58,6 +58,8 @@
 
 package HdbArchiver.Collector.scalar;
 
+import org.slf4j.Logger;
+
 import HdbArchiver.Collector.HdbModeHandler;
 import fr.esrf.Tango.AttrDataFormat;
 import fr.esrf.Tango.AttrWriteType;
@@ -68,19 +70,17 @@ import fr.esrf.TangoApi.events.TangoArchive;
 import fr.esrf.TangoApi.events.TangoArchiveEvent;
 import fr.esrf.tangoatk.core.BooleanScalarEvent;
 import fr.esrf.tangoatk.core.IBooleanScalar;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 
 public class BooleanScalar_RW extends BooleanScalar {
-
     /**
 	 *
 	 */
     private static final long serialVersionUID = -305489221453454069L;
 
-    public BooleanScalar_RW(final HdbModeHandler modeHandler) {
-	super(modeHandler);
+    public BooleanScalar_RW(final HdbModeHandler modeHandler, Logger logger) {
+	super(modeHandler, logger);
     }
 
     @Override
@@ -88,6 +88,7 @@ public class BooleanScalar_RW extends BooleanScalar {
 	return AttrWriteType._READ_WRITE;
     }
 
+    @Override
     public void booleanScalarChange(final BooleanScalarEvent event) {
 	final int tryNumber = DEFAULT_TRY_NUMBER;
 
@@ -124,18 +125,16 @@ public class BooleanScalar_RW extends BooleanScalar {
 	    processEventScalar(scalarEvent, tryNumber);
 
 	} catch (final DevFailed devFailed) {
-	    System.err.println("BooleanScalar_RW.numberScalarChange : "
-		    + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values...");
-	    printException(GlobalConst.DATA_TYPE_EXCEPTION, AttrDataFormat._SCALAR, scalarEvent
-		    .getAttribute_complete_name(), devFailed);
+	    System.err.println("BooleanScalar_RW.numberScalarChange : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values...");
+	    printException(GlobalConst.DATA_TYPE_EXCEPTION, AttrDataFormat._SCALAR,
+		    scalarEvent.getAttribute_complete_name(), devFailed);
 	    final Object value = null;
 	    scalarEvent.setValue(value);
 	    processEventScalar(scalarEvent, tryNumber);
 	} catch (final Exception exE) {
-	    System.err.println("BooleanScalar_RW.numberScalarChange : "
-		    + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values. Event : " + event
+	    System.err.println("BooleanScalar_RW.numberScalarChange : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values. Event : " + event
 		    + ", source " + event.getSource());
 	    exE.printStackTrace();
 	    final Object value = null;
@@ -143,8 +142,7 @@ public class BooleanScalar_RW extends BooleanScalar {
 	    processEventScalar(scalarEvent, tryNumber);
 
 	    final String message = "Problem in BooleanScalar_RW/booleanScalarChange";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, exE);
+	    logger.error(message, exE);
 	}
 
     }
@@ -152,6 +150,7 @@ public class BooleanScalar_RW extends BooleanScalar {
     // --------------------------------------------------------------------------//
     // ELETTRA : Archiving Events
     // --------------------------------------------------------------------------//
+    @Override
     public void archive(final TangoArchiveEvent event) {
 	final int tryNumber = DEFAULT_TRY_NUMBER;
 	DeviceAttribute attrib = null;
@@ -166,16 +165,12 @@ public class BooleanScalar_RW extends BooleanScalar {
 	} catch (final DevFailed f) {
 	    System.out.println("Error getting archive event attribute value");
 	    System.out.println();
-	    printException(
-		    GlobalConst.DATA_TYPE_EXCEPTION,
-		    AttrDataFormat._SCALAR,
-		    "\033[1;31mBooleanScalar_RW.archive.getValue() failed, caught DevFailed\033[0m",
-		    f);
+	    printException(GlobalConst.DATA_TYPE_EXCEPTION, AttrDataFormat._SCALAR,
+		    "\033[1;31mBooleanScalar_RW.archive.getValue() failed, caught DevFailed\033[0m", f);
 	    return;
 	} catch (final Exception e) /* Shouldn't be reached */
 	{
-	    System.out
-		    .println("BooleanScalar_RW.archive.getValue() failed, caught generic Exception, code failure");
+	    System.out.println("BooleanScalar_RW.archive.getValue() failed, caught generic Exception, code failure");
 	    e.printStackTrace();
 	    return;
 	}
@@ -209,23 +204,20 @@ public class BooleanScalar_RW extends BooleanScalar {
 	    bvalue[1] = bvalue_tmp[1];
 	    scalarEvent.setValue(bvalue);
 
-	    System.out.println(proxy.name() + ": " + attrib.getName()
-		    + "{boolean, RW} [\033[1;32mEVENT\033[0m]: " + "R: " + bvalue[0] + ", W: "
-		    + bvalue[1]);
+	    System.out.println(proxy.name() + ": " + attrib.getName() + "{boolean, RW} [\033[1;32mEVENT\033[0m]: "
+		    + "R: " + bvalue[0] + ", W: " + bvalue[1]);
 
 	    processEventScalar(scalarEvent, tryNumber);
 
 	} catch (final DevFailed devFailed) {
-	    print_exception("NumberScalar_RW.archive() : " + GlobalConst.ARCHIVING_ERROR_PREFIX
-		    + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values...", devFailed);
+	    print_exception("NumberScalar_RW.archive() : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values...", devFailed);
 	    final Object value = null;
 	    scalarEvent.setValue(value);
 	    processEventScalar(scalarEvent, tryNumber);
 	} catch (final Exception exE) {
-	    System.err.println("NumberScalar_RW.archive : " + GlobalConst.ARCHIVING_ERROR_PREFIX
-		    + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values...");
+	    System.err.println("NumberScalar_RW.archive : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values...");
 	    exE.printStackTrace();
 	    final Object value = null;
 	    scalarEvent.setValue(value);
diff --git a/src/main/java/HdbArchiver/Collector/scalar/BooleanScalar_WO.java b/src/main/java/HdbArchiver/Collector/scalar/BooleanScalar_WO.java
index 0035c3a6..8cc4e4ea 100644
--- a/src/main/java/HdbArchiver/Collector/scalar/BooleanScalar_WO.java
+++ b/src/main/java/HdbArchiver/Collector/scalar/BooleanScalar_WO.java
@@ -57,6 +57,8 @@
 //-======================================================================
 package HdbArchiver.Collector.scalar;
 
+import org.slf4j.Logger;
+
 import HdbArchiver.Collector.HdbModeHandler;
 import fr.esrf.Tango.AttrDataFormat;
 import fr.esrf.Tango.AttrWriteType;
@@ -67,19 +69,17 @@ import fr.esrf.TangoApi.events.TangoArchive;
 import fr.esrf.TangoApi.events.TangoArchiveEvent;
 import fr.esrf.tangoatk.core.BooleanScalarEvent;
 import fr.esrf.tangoatk.core.IBooleanScalar;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 
 public class BooleanScalar_WO extends BooleanScalar {
-
     /**
 	 *
 	 */
     private static final long serialVersionUID = -4029883084366891708L;
 
-    public BooleanScalar_WO(final HdbModeHandler modeHandler) {
-	super(modeHandler);
+    public BooleanScalar_WO(final HdbModeHandler modeHandler, Logger logger) {
+	super(modeHandler, logger);
     }
 
     @Override
@@ -87,6 +87,7 @@ public class BooleanScalar_WO extends BooleanScalar {
 	return AttrWriteType._WRITE;
     }
 
+    @Override
     public void booleanScalarChange(final BooleanScalarEvent event) {
 	final int tryNumber = DEFAULT_TRY_NUMBER;
 	final ScalarEvent scalarEvent = new ScalarEvent();
@@ -105,18 +106,16 @@ public class BooleanScalar_WO extends BooleanScalar {
 	    processEventScalar(scalarEvent, tryNumber);
 
 	} catch (final DevFailed devFailed) {
-	    System.err.println("BooleanScalar_WO.numberScalarChange : "
-		    + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values...");
-	    printException(GlobalConst.DATA_TYPE_EXCEPTION, AttrDataFormat._SCALAR, scalarEvent
-		    .getAttribute_complete_name(), devFailed);
+	    System.err.println("BooleanScalar_WO.numberScalarChange : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values...");
+	    printException(GlobalConst.DATA_TYPE_EXCEPTION, AttrDataFormat._SCALAR,
+		    scalarEvent.getAttribute_complete_name(), devFailed);
 	    final Object value = null;
 	    scalarEvent.setValue(value);
 	    processEventScalar(scalarEvent, tryNumber);
 	} catch (final Exception exE) {
-	    System.err.println("BooleanScalar_WO.numberScalarChange : "
-		    + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values. Event : " + event
+	    System.err.println("BooleanScalar_WO.numberScalarChange : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values. Event : " + event
 		    + ", source " + event.getSource());
 	    exE.printStackTrace();
 	    final Object value = null;
@@ -124,8 +123,7 @@ public class BooleanScalar_WO extends BooleanScalar {
 	    processEventScalar(scalarEvent, tryNumber);
 
 	    final String message = "Problem in BooleanScalar_WO/booleanScalarChange";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, exE);
+	    logger.error(message, exE);
 	}
     }
 
@@ -137,6 +135,7 @@ public class BooleanScalar_WO extends BooleanScalar {
      * @author giacomo Implements the boolean scalar archive events for the read
      *         only type
      */
+    @Override
     public void archive(final TangoArchiveEvent event) {
 	final int tryNumber = DEFAULT_TRY_NUMBER;
 	DeviceAttribute attrib = null;
@@ -148,14 +147,11 @@ public class BooleanScalar_WO extends BooleanScalar {
 	    attrib = event.getValue();
 	} catch (final DevFailed f) {
 	    System.out.println("Error getting archive event attribute value");
-	    print_exception(
-		    "\033[1;31mBooleanScalar_WO.archive.getValue() failed, caught DevFailed\033[0m",
-		    f);
+	    print_exception("\033[1;31mBooleanScalar_WO.archive.getValue() failed, caught DevFailed\033[0m", f);
 	    return;
 	} catch (final Exception e) /* Shouldn't be reached */
 	{
-	    System.out
-		    .println("BooleanScalar_WO.archive.getValue() failed, caught generic Exception, code failure");
+	    System.out.println("BooleanScalar_WO.archive.getValue() failed, caught generic Exception, code failure");
 	    e.printStackTrace();
 	    return;
 	}
@@ -191,16 +187,14 @@ public class BooleanScalar_WO extends BooleanScalar {
 	    processEventScalar(scalarEvent, tryNumber);
 
 	} catch (final DevFailed devFailed) {
-	    print_exception("NumberScalar_WO.archive() : " + GlobalConst.ARCHIVING_ERROR_PREFIX
-		    + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values...", devFailed);
+	    print_exception("NumberScalar_WO.archive() : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values...", devFailed);
 	    final Object value = null;
 	    scalarEvent.setValue(value);
 	    processEventScalar(scalarEvent, tryNumber);
 	} catch (final Exception exE) {
-	    System.err.println("BooleanScalar_WO.archive : " + GlobalConst.ARCHIVING_ERROR_PREFIX
-		    + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values...");
+	    System.err.println("BooleanScalar_WO.archive : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values...");
 	    exE.printStackTrace();
 	    final Object value = null;
 	    scalarEvent.setValue(value);
diff --git a/src/main/java/HdbArchiver/Collector/scalar/NumberScalar.java b/src/main/java/HdbArchiver/Collector/scalar/NumberScalar.java
index b29b4e3c..2ff355c7 100644
--- a/src/main/java/HdbArchiver/Collector/scalar/NumberScalar.java
+++ b/src/main/java/HdbArchiver/Collector/scalar/NumberScalar.java
@@ -132,6 +132,8 @@ package HdbArchiver.Collector.scalar;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.slf4j.Logger;
+
 import Common.Archiver.Collector.ModesCounters;
 import HdbArchiver.HdbArchiver;
 import HdbArchiver.Collector.HdbCollector;
@@ -150,7 +152,6 @@ import fr.esrf.tangoatk.core.INumberScalar;
 import fr.esrf.tangoatk.core.INumberScalarListener;
 import fr.esrf.tangoatk.core.attribute.AAttribute;
 import fr.esrf.tangoatk.core.attribute.AttributeFactory;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.AttributeLightMode;
@@ -167,8 +168,8 @@ public abstract class NumberScalar extends HdbCollector implements INumberScalar
 
     private final Map<Device, TangoEventsAdapter> evtAdaptHMap;
 
-    public NumberScalar(final HdbModeHandler modeHandler) {
-	super(modeHandler);
+    public NumberScalar(final HdbModeHandler modeHandler, Logger logger) {
+	super(modeHandler, logger);
 	evtAdaptHMap = new HashMap<Device, TangoEventsAdapter>();
     }
 
@@ -176,8 +177,7 @@ public abstract class NumberScalar extends HdbCollector implements INumberScalar
     public synchronized void removeSource(final String attributeName) throws ArchivingException {
 	Util.out2.println("NumberScalar.removeSource");
 
-	logger.trace(ILogger.LEVEL_INFO, "===> Entering " + this.getClass().getSimpleName() + ".removeSource for "
-		+ attributeName);
+	logger.debug("===> Entering " + this.getClass().getSimpleName() + ".removeSource for " + attributeName);
 
 	if (HdbArchiver.isUseEvents) {
 	    removeSourceForEvents(attributeName);
@@ -195,7 +195,7 @@ public abstract class NumberScalar extends HdbCollector implements INumberScalar
 		attribute.removeErrorListener(this);
 		attributeList.remove(attributeName);
 		isFirstValueList.remove(attributeName.toLowerCase());
-		logger.trace(ILogger.LEVEL_INFO, "\t The attribute was fired from the Collector list...");
+		logger.debug("\t The attribute was fired from the Collector list...");
 		// informs the mother class that one new attribute must be
 		// removed
 		removeAttribute(attributeName);
@@ -229,7 +229,7 @@ public abstract class NumberScalar extends HdbCollector implements INumberScalar
 		// informs the mother class that one new attribute must be
 		// managed
 		addAttribute(attName);
-		logger.trace(ILogger.LEVEL_INFO, "add archiving for " + attName);
+		logger.debug("add archiving for " + attName);
 	    }
 	} catch (final ConnectionException e) {
 	    final String message = GlobalConst.ARCHIVING_ERROR_PREFIX + " : " + "Failed adding '"
@@ -418,11 +418,11 @@ public abstract class NumberScalar extends HdbCollector implements INumberScalar
 	    if (isFirstValueList.get(attributeName.toLowerCase())) {
 		doArchive = true;
 		isFirstValueList.put(attributeName.toLowerCase(), false);
-		logger.trace(ILogger.LEVEL_DEBUG, attributeName + " first value, forcing archiving");
+		logger.debug(attributeName + " first value, forcing archiving");
 	    } else {
 		final ModesCounters mc = getModeCounter(attributeName);
 		if (mc == null) {
-		    logger.trace(ILogger.LEVEL_ERROR, attributeName + " Attribute Counters unknown ");
+		    logger.debug(attributeName + " Attribute Counters unknown ");
 		} else {
 		    doArchive = doArchiveEvent(mc, scalarEvent.getData_type(), scalarEvent.getReadValue(),
 			    getLastValue(scalarEvent), attributeName);
@@ -438,8 +438,7 @@ public abstract class NumberScalar extends HdbCollector implements INumberScalar
 	} catch (final Exception e) {
 	    e.printStackTrace();
 	    final String message = "Problem storing NumberScalar value";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, e);
+	    logger.error(message, e);
 
 	    try_number--;
 	    if (try_number > 0) {
@@ -470,7 +469,7 @@ public abstract class NumberScalar extends HdbCollector implements INumberScalar
 	final String errorMess = this.getClass().getSimpleName() + ".errorChange : Unable to read the attribute named "
 		+ errorEvent.getSource().toString();
 	Util.out3.println(errorMess);
-	super.logger.trace(ILogger.LEVEL_ERROR, errorMess);
+	logger.error(errorMess);
 
 	/* Must be change because the number scalar are not only double */
 	try {
@@ -478,8 +477,8 @@ public abstract class NumberScalar extends HdbCollector implements INumberScalar
 		    getNullValueScalarEvent(errorEvent, ((AAttribute) errorEvent.getSource()).getTangoDataType(),
 			    getWritableValue()), tryNumber);
 	} catch (final Exception e) {
-	    super.logger.trace(ILogger.LEVEL_ERROR, this.getClass().getSimpleName()
-		    + ".errorChange : during processEventScalar creation execp : " + e);
+	    logger.error(this.getClass().getSimpleName() + ".errorChange : during processEventScalar creation execp : "
+		    + e);
 	    e.printStackTrace();
 	}
     }
diff --git a/src/main/java/HdbArchiver/Collector/scalar/NumberScalar_RO.java b/src/main/java/HdbArchiver/Collector/scalar/NumberScalar_RO.java
index 9f44bfd6..a0553c54 100644
--- a/src/main/java/HdbArchiver/Collector/scalar/NumberScalar_RO.java
+++ b/src/main/java/HdbArchiver/Collector/scalar/NumberScalar_RO.java
@@ -58,6 +58,8 @@
 
 package HdbArchiver.Collector.scalar;
 
+import org.slf4j.Logger;
+
 import HdbArchiver.Collector.HdbModeHandler;
 import fr.esrf.Tango.AttrDataFormat;
 import fr.esrf.Tango.AttrWriteType;
@@ -68,7 +70,6 @@ import fr.esrf.TangoApi.events.TangoArchive;
 import fr.esrf.TangoApi.events.TangoArchiveEvent;
 import fr.esrf.TangoDs.TangoConst;
 import fr.esrf.tangoatk.core.NumberScalarEvent;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 
@@ -79,8 +80,8 @@ public class NumberScalar_RO extends NumberScalar {
 	 */
     private static final long serialVersionUID = -1349983513031046797L;
 
-    public NumberScalar_RO(final HdbModeHandler modeHandler) {
-	super(modeHandler);
+    public NumberScalar_RO(final HdbModeHandler modeHandler, Logger logger) {
+	super(modeHandler, logger);
     }
 
     @Override
@@ -157,8 +158,7 @@ public class NumberScalar_RO extends NumberScalar {
 	    processEventScalar(scalarEvent, tryNumber);
 
 	    final String message = "Problem in NumberScalar_RO/numberScalarChange";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, exE);
+	    logger.error(message, exE);
 	}
 
     }
diff --git a/src/main/java/HdbArchiver/Collector/scalar/NumberScalar_RW.java b/src/main/java/HdbArchiver/Collector/scalar/NumberScalar_RW.java
index 25cb3d6d..b1880469 100644
--- a/src/main/java/HdbArchiver/Collector/scalar/NumberScalar_RW.java
+++ b/src/main/java/HdbArchiver/Collector/scalar/NumberScalar_RW.java
@@ -61,6 +61,8 @@
 
 package HdbArchiver.Collector.scalar;
 
+import org.slf4j.Logger;
+
 import HdbArchiver.Collector.HdbModeHandler;
 import fr.esrf.Tango.AttrDataFormat;
 import fr.esrf.Tango.AttrWriteType;
@@ -71,7 +73,6 @@ import fr.esrf.TangoApi.events.TangoArchive;
 import fr.esrf.TangoApi.events.TangoArchiveEvent;
 import fr.esrf.TangoDs.TangoConst;
 import fr.esrf.tangoatk.core.NumberScalarEvent;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 
@@ -79,14 +80,13 @@ import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 //ELETTRA : Archiving Events
 //--------------------------------------------------------------------------//
 public class NumberScalar_RW extends NumberScalar {
-
     /**
 	 *
 	 */
     private static final long serialVersionUID = -5039552396416573704L;
 
-    public NumberScalar_RW(final HdbModeHandler modeHandler) {
-	super(modeHandler);
+    public NumberScalar_RW(final HdbModeHandler modeHandler, Logger logger) {
+	super(modeHandler, logger);
     }
 
     @Override
@@ -182,8 +182,7 @@ public class NumberScalar_RW extends NumberScalar {
 	    processEventScalar(scalarEvent, tryNumber);
 
 	    final String message = "Problem in NumberScalar_RW/numberScalarChange";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, exE);
+	    logger.error(message, exE);
 	}
 
     }
diff --git a/src/main/java/HdbArchiver/Collector/scalar/NumberScalar_WO.java b/src/main/java/HdbArchiver/Collector/scalar/NumberScalar_WO.java
index 03dbd683..d092826f 100644
--- a/src/main/java/HdbArchiver/Collector/scalar/NumberScalar_WO.java
+++ b/src/main/java/HdbArchiver/Collector/scalar/NumberScalar_WO.java
@@ -54,6 +54,8 @@
 //-======================================================================
 package HdbArchiver.Collector.scalar;
 
+import org.slf4j.Logger;
+
 import HdbArchiver.Collector.HdbModeHandler;
 import fr.esrf.Tango.AttrDataFormat;
 import fr.esrf.Tango.AttrWriteType;
@@ -64,19 +66,17 @@ import fr.esrf.TangoApi.events.TangoArchive;
 import fr.esrf.TangoApi.events.TangoArchiveEvent;
 import fr.esrf.TangoDs.TangoConst;
 import fr.esrf.tangoatk.core.NumberScalarEvent;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 
 public class NumberScalar_WO extends NumberScalar {
-
     /**
 	 *
 	 */
     private static final long serialVersionUID = 3795129767870099591L;
 
-    public NumberScalar_WO(final HdbModeHandler modeHandler) {
-	super(modeHandler);
+    public NumberScalar_WO(final HdbModeHandler modeHandler, Logger logger) {
+	super(modeHandler, logger);
     }
 
     @Override
@@ -140,8 +140,7 @@ public class NumberScalar_WO extends NumberScalar {
 	    processEventScalar(scalarEvent, tryNumber);
 
 	    final String message = "Problem in NumberScalar_RW/numberScalarChange";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, exE);
+	    logger.error(message, exE);
 	}
     }
 
diff --git a/src/main/java/HdbArchiver/Collector/scalar/StateScalar.java b/src/main/java/HdbArchiver/Collector/scalar/StateScalar.java
index 401792d1..19c85421 100644
--- a/src/main/java/HdbArchiver/Collector/scalar/StateScalar.java
+++ b/src/main/java/HdbArchiver/Collector/scalar/StateScalar.java
@@ -29,6 +29,8 @@ package HdbArchiver.Collector.scalar;
 
 import java.util.HashMap;
 
+import org.slf4j.Logger;
+
 import Common.Archiver.Collector.ModesCounters;
 import HdbArchiver.HdbArchiver;
 import HdbArchiver.Collector.HdbCollector;
@@ -47,14 +49,12 @@ import fr.esrf.tangoatk.core.ErrorEvent;
 import fr.esrf.tangoatk.core.IDevStateScalar;
 import fr.esrf.tangoatk.core.IDevStateScalarListener;
 import fr.esrf.tangoatk.core.attribute.AttributeFactory;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.AttributeLightMode;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 
 public abstract class StateScalar extends HdbCollector implements IDevStateScalarListener, ITangoArchiveListener {
-
     /**
 	 *
 	 */
@@ -62,8 +62,8 @@ public abstract class StateScalar extends HdbCollector implements IDevStateScala
 
     private final HashMap<Device, TangoEventsAdapter> evtAdaptHMap;
 
-    public StateScalar(final HdbModeHandler _modeHandler) {
-	super(_modeHandler);
+    public StateScalar(final HdbModeHandler _modeHandler, Logger logger) {
+	super(_modeHandler, logger);
 
 	evtAdaptHMap = new HashMap<Device, TangoEventsAdapter>();
     }
@@ -125,7 +125,7 @@ public abstract class StateScalar extends HdbCollector implements IDevStateScala
 		// informs the mother class that one new attribute must be
 		// managed
 		addAttribute(attName);
-		logger.trace(ILogger.LEVEL_INFO, "add archiving for " + attName);
+		logger.debug("add archiving for " + attName);
 	    }
 
 	} catch (final ConnectionException e) {
@@ -303,12 +303,12 @@ public abstract class StateScalar extends HdbCollector implements IDevStateScala
 	    if (isFirstValueList.get(attributeName.toLowerCase())) {
 		doArchive = true;
 		isFirstValueList.put(attributeName.toLowerCase(), false);
-		logger.trace(ILogger.LEVEL_DEBUG, attributeName + " first value, forcing archiving");
+		logger.debug(attributeName + " first value, forcing archiving");
 	    } else {
 
 		final ModesCounters mc = getModeCounter(attributeName);
 		if (mc == null) {
-		    logger.trace(ILogger.LEVEL_ERROR, attributeName + "attribute Counters unknown");
+		    logger.debug(attributeName + "attribute Counters unknown");
 		} else {
 		    doArchive = doArchiveEvent(mc, scalarEvent.getData_type(), scalarEvent.getReadValue(),
 			    getLastValue(scalarEvent), attributeName);
@@ -322,8 +322,7 @@ public abstract class StateScalar extends HdbCollector implements IDevStateScala
 	    setLastValue(scalarEvent, scalarEvent.getReadValue());
 	} catch (final Exception e) {
 	    final String message = "Problem storing StateScalar value";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, e);
+	    logger.error(message, e);
 
 	    try_number--;
 	    if (try_number > 0) {
@@ -358,14 +357,14 @@ public abstract class StateScalar extends HdbCollector implements IDevStateScala
 	final String errorMess = this.getClass().getSimpleName() + ".errorChange : Unable to read the attribute named "
 		+ errorEvent.getSource().toString();
 	Util.out3.println(errorMess);
-	super.logger.trace(ILogger.LEVEL_ERROR, errorMess);
+	logger.error(errorMess);
 
 	try {
 	    processEventScalar(getNullValueScalarEvent(errorEvent, TangoConst.Tango_DEV_STATE, getWritableValue()),
 		    tryNumber);
 	} catch (final Exception e) {
-	    super.logger.trace(ILogger.LEVEL_ERROR, this.getClass().getSimpleName()
-		    + ".errorChange : during processEventScalar creation execp : " + e);
+	    logger.error(this.getClass().getSimpleName() + ".errorChange : during processEventScalar creation execp : "
+		    + e);
 	    e.printStackTrace();
 	}
     }
diff --git a/src/main/java/HdbArchiver/Collector/scalar/StateScalar_RO.java b/src/main/java/HdbArchiver/Collector/scalar/StateScalar_RO.java
index d1faeab0..7007874d 100644
--- a/src/main/java/HdbArchiver/Collector/scalar/StateScalar_RO.java
+++ b/src/main/java/HdbArchiver/Collector/scalar/StateScalar_RO.java
@@ -26,6 +26,8 @@
 //-======================================================================
 package HdbArchiver.Collector.scalar;
 
+import org.slf4j.Logger;
+
 import HdbArchiver.Collector.HdbModeHandler;
 import fr.esrf.Tango.AttrDataFormat;
 import fr.esrf.Tango.AttrWriteType;
@@ -37,7 +39,6 @@ import fr.esrf.TangoApi.events.TangoArchive;
 import fr.esrf.TangoApi.events.TangoArchiveEvent;
 import fr.esrf.tangoatk.core.DevStateScalarEvent;
 import fr.esrf.tangoatk.core.IDevStateScalar;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 
@@ -45,14 +46,13 @@ import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 //ELETTRA : Archiving Events
 //--------------------------------------------------------------------------//
 public class StateScalar_RO extends StateScalar {
-
     /**
 	 *
 	 */
     private static final long serialVersionUID = 5259826748837748125L;
 
-    public StateScalar_RO(final HdbModeHandler _modeHandler) {
-	super(_modeHandler);
+    public StateScalar_RO(final HdbModeHandler _modeHandler, Logger logger) {
+	super(_modeHandler, logger);
     }
 
     @Override
@@ -104,8 +104,7 @@ public class StateScalar_RO extends StateScalar {
 	    processEventScalar(scalarEvent, tryNumber);
 
 	    final String message = "Problem in StateScalar_RO/devStateScalarChange";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, exE);
+	    logger.error(message, exE);
 	}
     }
 
diff --git a/src/main/java/HdbArchiver/Collector/scalar/StringScalar.java b/src/main/java/HdbArchiver/Collector/scalar/StringScalar.java
index d11e826d..2e002588 100644
--- a/src/main/java/HdbArchiver/Collector/scalar/StringScalar.java
+++ b/src/main/java/HdbArchiver/Collector/scalar/StringScalar.java
@@ -29,6 +29,8 @@ package HdbArchiver.Collector.scalar;
 
 import java.util.HashMap;
 
+import org.slf4j.Logger;
+
 import Common.Archiver.Collector.ModesCounters;
 import HdbArchiver.HdbArchiver;
 import HdbArchiver.Collector.HdbCollector;
@@ -47,7 +49,6 @@ import fr.esrf.tangoatk.core.ErrorEvent;
 import fr.esrf.tangoatk.core.IStringScalar;
 import fr.esrf.tangoatk.core.IStringScalarListener;
 import fr.esrf.tangoatk.core.attribute.AttributeFactory;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.AttributeLightMode;
@@ -64,8 +65,8 @@ public abstract class StringScalar extends HdbCollector implements IStringScalar
 
     private final HashMap<Device, TangoEventsAdapter> evtAdaptHMap;
 
-    public StringScalar(final HdbModeHandler _modeHandler) {
-	super(_modeHandler);
+    public StringScalar(final HdbModeHandler _modeHandler, Logger logger) {
+	super(_modeHandler, logger);
 
 	evtAdaptHMap = new HashMap<Device, TangoEventsAdapter>();
     }
@@ -124,7 +125,7 @@ public abstract class StringScalar extends HdbCollector implements IStringScalar
 		// informs the mother class that one new attribute must be
 		// managed
 		addAttribute(attName);
-		logger.trace(ILogger.LEVEL_INFO, "add archiving for " + attName);
+		logger.debug("add archiving for " + attName);
 	    }
 	} catch (final ConnectionException e) {
 	    final String message = GlobalConst.ARCHIVING_ERROR_PREFIX + " : " + "Failed adding '"
@@ -307,12 +308,12 @@ public abstract class StringScalar extends HdbCollector implements IStringScalar
 	    if (isFirstValueList.get(attributeName.toLowerCase())) {
 		doArchive = true;
 		isFirstValueList.put(attributeName.toLowerCase(), false);
-		logger.trace(ILogger.LEVEL_DEBUG, attributeName + " first value, forcing archiving");
+		logger.debug(attributeName + " first value, forcing archiving");
 	    } else {
 
 		final ModesCounters mc = getModeCounter(attributeName);
 		if (mc == null) {
-		    logger.trace(ILogger.LEVEL_ERROR, attributeName + " Attribute Counters unknown");
+		    logger.debug(attributeName + " Attribute Counters unknown");
 		} else {
 		    doArchive = doArchiveEvent(mc, scalarEvent.getData_type(), scalarEvent.getReadValue(),
 			    getLastValue(scalarEvent), attributeName);
@@ -326,8 +327,7 @@ public abstract class StringScalar extends HdbCollector implements IStringScalar
 	    setLastValue(scalarEvent, scalarEvent.getReadValue());
 	} catch (final Exception e) {
 	    final String message = "Problem storing StringScalar value";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, e);
+	    logger.error(message);
 
 	    try_number--;
 	    if (try_number > 0) {
@@ -357,14 +357,14 @@ public abstract class StringScalar extends HdbCollector implements IStringScalar
 	final String errorMess = this.getClass().getSimpleName() + ".errorChange : Unable to read the attribute named "
 		+ errorEvent.getSource().toString();
 	Util.out3.println(errorMess);
-	super.logger.trace(ILogger.LEVEL_ERROR, errorMess);
+	logger.error(errorMess);
 
 	try {
 	    processEventScalar(getNullValueScalarEvent(errorEvent, TangoConst.Tango_DEV_STRING, getWritableValue()),
 		    tryNumber);
 	} catch (final Exception e) {
-	    super.logger.trace(ILogger.LEVEL_ERROR, this.getClass().getSimpleName()
-		    + ".errorChange : during processEventScalar creation execp : " + e);
+	    logger.error(this.getClass().getSimpleName() + ".errorChange : during processEventScalar creation execp : "
+		    + e);
 	    e.printStackTrace();
 	}
     }
diff --git a/src/main/java/HdbArchiver/Collector/scalar/StringScalar_RO.java b/src/main/java/HdbArchiver/Collector/scalar/StringScalar_RO.java
index b3bc30a5..1cf0ce45 100644
--- a/src/main/java/HdbArchiver/Collector/scalar/StringScalar_RO.java
+++ b/src/main/java/HdbArchiver/Collector/scalar/StringScalar_RO.java
@@ -26,6 +26,8 @@
 //-======================================================================
 package HdbArchiver.Collector.scalar;
 
+import org.slf4j.Logger;
+
 import HdbArchiver.Collector.HdbModeHandler;
 import fr.esrf.Tango.AttrDataFormat;
 import fr.esrf.Tango.AttrWriteType;
@@ -36,19 +38,17 @@ import fr.esrf.TangoApi.events.TangoArchive;
 import fr.esrf.TangoApi.events.TangoArchiveEvent;
 import fr.esrf.tangoatk.core.IStringScalar;
 import fr.esrf.tangoatk.core.StringScalarEvent;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 
 public class StringScalar_RO extends StringScalar {
-
     /**
 	 *
 	 */
     private static final long serialVersionUID = -7481960847950899978L;
 
-    public StringScalar_RO(final HdbModeHandler _modeHandler) {
-	super(_modeHandler);
+    public StringScalar_RO(final HdbModeHandler _modeHandler, Logger logger) {
+	super(_modeHandler, logger);
     }
 
     @Override
@@ -56,6 +56,7 @@ public class StringScalar_RO extends StringScalar {
 	return AttrWriteType._READ;
     }
 
+    @Override
     public void stringScalarChange(final StringScalarEvent event) {
 	final int tryNumber = DEFAULT_TRY_NUMBER;
 	final ScalarEvent scalarEvent = new ScalarEvent();
@@ -83,18 +84,16 @@ public class StringScalar_RO extends StringScalar {
 	    processEventScalar(scalarEvent, tryNumber);
 
 	} catch (final DevFailed devFailed) {
-	    System.err.println("StringScalar_RO.stringScalarChange : "
-		    + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values...");
-	    printException(GlobalConst.DATA_TYPE_EXCEPTION, AttrDataFormat._SCALAR, scalarEvent
-		    .getAttribute_complete_name(), devFailed);
+	    System.err.println("StringScalar_RO.stringScalarChange : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values...");
+	    printException(GlobalConst.DATA_TYPE_EXCEPTION, AttrDataFormat._SCALAR,
+		    scalarEvent.getAttribute_complete_name(), devFailed);
 	    final Object value = null;
 	    scalarEvent.setValue(value);
 	    processEventScalar(scalarEvent, tryNumber);
 	} catch (final Exception exE) {
-	    System.err.println("StringScalar_RO.stringScalarChange : "
-		    + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values. Event : " + event
+	    System.err.println("StringScalar_RO.stringScalarChange : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values. Event : " + event
 		    + ", source " + event.getSource());
 	    exE.printStackTrace();
 	    final Object value = null;
@@ -102,8 +101,7 @@ public class StringScalar_RO extends StringScalar {
 	    processEventScalar(scalarEvent, tryNumber);
 
 	    final String message = "Problem in StringScalar_RO/stringScalarChange";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, exE);
+	    logger.error(message, exE);
 	}
 
     }
@@ -111,6 +109,7 @@ public class StringScalar_RO extends StringScalar {
     // --------------------------------------------------------------------------//
     // ELETTRA : Archiving Events
     // --------------------------------------------------------------------------//
+    @Override
     public void archive(final TangoArchiveEvent event) {
 	final int tryNumber = DEFAULT_TRY_NUMBER;
 	DeviceAttribute attrib = null;
@@ -129,8 +128,7 @@ public class StringScalar_RO extends StringScalar {
 	    return;
 	} catch (final Exception e) /* Shouldn't be reached */
 	{
-	    System.out
-		    .println("StateScalar_RO.archive.getValue() failed, caught generic Exception, code failure");
+	    System.out.println("StateScalar_RO.archive.getValue() failed, caught generic Exception, code failure");
 	    e.printStackTrace();
 	    return;
 	}
@@ -147,8 +145,7 @@ public class StringScalar_RO extends StringScalar {
 			.println("\033[1;31mStringScalar_RO.java: event.getValue() or event.getSource() or event.getSource().getEventSupplier()) returned null!\033[0m");
 		return;
 	    }
-	    System.out.print(proxy.name() + ": " + attrib.getName()
-		    + "{string scalar, RO} [\033[1;32mEVENT\033[0m]: ");
+	    System.out.print(proxy.name() + ": " + attrib.getName() + "{string scalar, RO} [\033[1;32mEVENT\033[0m]: ");
 
 	    scalarEvent.setAttribute_complete_name(proxy.name() + "/" + attrib.getName());
 	    scalarEvent.setTimeStamp(attrib.getTime());
@@ -164,16 +161,14 @@ public class StringScalar_RO extends StringScalar {
 	    scalarEvent.setValue(svalue); /* complete the scalarEvent */
 	    processEventScalar(scalarEvent, tryNumber);
 	} catch (final DevFailed devFailed) {
-	    print_exception("StringScalar_RO.archive() : " + GlobalConst.ARCHIVING_ERROR_PREFIX
-		    + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values...", devFailed);
+	    print_exception("StringScalar_RO.archive() : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values...", devFailed);
 	    final Object value = null;
 	    scalarEvent.setValue(value);
 	    processEventScalar(scalarEvent, tryNumber);
 	} catch (final Exception exE) {
-	    System.err.println("StringScalar_RO.archive() : " + GlobalConst.ARCHIVING_ERROR_PREFIX
-		    + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values...");
+	    System.err.println("StringScalar_RO.archive() : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values...");
 	    exE.printStackTrace();
 	    final Object value = null;
 	    scalarEvent.setValue(value);
diff --git a/src/main/java/HdbArchiver/Collector/scalar/StringScalar_RW.java b/src/main/java/HdbArchiver/Collector/scalar/StringScalar_RW.java
index 5db2cfd4..5f1a4f14 100644
--- a/src/main/java/HdbArchiver/Collector/scalar/StringScalar_RW.java
+++ b/src/main/java/HdbArchiver/Collector/scalar/StringScalar_RW.java
@@ -26,6 +26,8 @@
 //-======================================================================
 package HdbArchiver.Collector.scalar;
 
+import org.slf4j.Logger;
+
 import HdbArchiver.Collector.HdbModeHandler;
 import fr.esrf.Tango.AttrDataFormat;
 import fr.esrf.Tango.AttrWriteType;
@@ -36,20 +38,18 @@ import fr.esrf.TangoApi.events.TangoArchive;
 import fr.esrf.TangoApi.events.TangoArchiveEvent;
 import fr.esrf.tangoatk.core.IStringScalar;
 import fr.esrf.tangoatk.core.StringScalarEvent;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.StringFormater;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 
 public class StringScalar_RW extends StringScalar {
-
     /**
 	 *
 	 */
     private static final long serialVersionUID = -6664045409944983610L;
 
-    public StringScalar_RW(final HdbModeHandler _modeHandler) {
-	super(_modeHandler);
+    public StringScalar_RW(final HdbModeHandler _modeHandler, Logger logger) {
+	super(_modeHandler, logger);
     }
 
     @Override
@@ -57,6 +57,7 @@ public class StringScalar_RW extends StringScalar {
 	return AttrWriteType._READ_WRITE;
     }
 
+    @Override
     public void stringScalarChange(final StringScalarEvent event) {
 	final int tryNumber = DEFAULT_TRY_NUMBER;
 	final ScalarEvent scalarEvent = new ScalarEvent();
@@ -86,18 +87,16 @@ public class StringScalar_RW extends StringScalar {
 	    processEventScalar(scalarEvent, tryNumber);
 
 	} catch (final DevFailed devFailed) {
-	    System.err.println("StringScalar_RW.stringScalarChange : "
-		    + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values...");
-	    printException(GlobalConst.DATA_TYPE_EXCEPTION, AttrDataFormat._SCALAR, scalarEvent
-		    .getAttribute_complete_name(), devFailed);
+	    System.err.println("StringScalar_RW.stringScalarChange : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values...");
+	    printException(GlobalConst.DATA_TYPE_EXCEPTION, AttrDataFormat._SCALAR,
+		    scalarEvent.getAttribute_complete_name(), devFailed);
 	    final Object value = null;
 	    scalarEvent.setValue(value);
 	    processEventScalar(scalarEvent, tryNumber);
 	} catch (final Exception exE) {
-	    System.err.println("StringScalar_RW.stringScalarChange : "
-		    + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values. Event : " + event
+	    System.err.println("StringScalar_RW.stringScalarChange : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values. Event : " + event
 		    + ", source " + event.getSource());
 	    exE.printStackTrace();
 	    final Object value = null;
@@ -105,8 +104,7 @@ public class StringScalar_RW extends StringScalar {
 	    processEventScalar(scalarEvent, tryNumber);
 
 	    final String message = "Problem in StringScalar_RW/stringScalarChange";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, exE);
+	    logger.error(message, exE);
 	}
     }
 
@@ -114,6 +112,7 @@ public class StringScalar_RW extends StringScalar {
     // ELETTRA : Archiving Events
     // --------------------------------------------------------------------------//
     /* Invoked on the reception of a tango archive event. */
+    @Override
     public void archive(final TangoArchiveEvent event) {
 	final int tryNumber = DEFAULT_TRY_NUMBER;
 	DeviceAttribute attrib = null;
@@ -132,8 +131,7 @@ public class StringScalar_RW extends StringScalar {
 	    return;
 	} catch (final Exception e) /* Shouldn't be reached */
 	{
-	    System.out
-		    .println("StringScalar_RW.archive.getValue() failed, caught generic Exception, code failure");
+	    System.out.println("StringScalar_RW.archive.getValue() failed, caught generic Exception, code failure");
 	    e.printStackTrace();
 	    return;
 	}
@@ -154,8 +152,8 @@ public class StringScalar_RW extends StringScalar {
 			.println("\033[1;31mStringScalar_RW.java: event.getValue() or event.getSource() or event.getSource().getEventSupplier()) returned null!\033[0m");
 		return;
 	    }
-	    System.out.println("\033[1;35marchive() [String Scalar RW]: [EVENT]: \033[1;32m"
-		    + proxy.name() + "/" + attrib.getName() + "\033[0m");
+	    System.out.println("\033[1;35marchive() [String Scalar RW]: [EVENT]: \033[1;32m" + proxy.name() + "/"
+		    + attrib.getName() + "\033[0m");
 
 	    scalarEvent.setAttribute_complete_name(proxy.name() + "/" + attrib.getName());
 	    scalarEvent.setTimeStamp(attrib.getTime());
@@ -171,25 +169,21 @@ public class StringScalar_RW extends StringScalar {
 		svalue[i] = value;
 
 	    }
-	    System.out.print(proxy.name() + ": " + attrib.getName()
-		    + "{string scalar, RW} [\033[1;32mEVENT\033[0m]: ");
+	    System.out.print(proxy.name() + ": " + attrib.getName() + "{string scalar, RW} [\033[1;32mEVENT\033[0m]: ");
 
-	    System.out.println("\033[1;35m(R): " + svalue[0] + "\033[0m, (Set):\033[1;36m "
-		    + svalue[1] + "\033[0m");
+	    System.out.println("\033[1;35m(R): " + svalue[0] + "\033[0m, (Set):\033[1;36m " + svalue[1] + "\033[0m");
 	    scalarEvent.setValue(svalue); /* complete the scalarEvent */
 
 	    processEventScalar(scalarEvent, tryNumber);
 	} catch (final DevFailed devFailed) {
-	    print_exception("StringScalar_RW.archive() : " + GlobalConst.ARCHIVING_ERROR_PREFIX
-		    + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values...", devFailed);
+	    print_exception("StringScalar_RW.archive() : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values...", devFailed);
 	    final Object value = null;
 	    scalarEvent.setValue(value);
 	    processEventScalar(scalarEvent, tryNumber);
 	} catch (final Exception exE) {
-	    System.err.println("StringScalar_RW.archive() : " + GlobalConst.ARCHIVING_ERROR_PREFIX
-		    + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values...");
+	    System.err.println("StringScalar_RW.archive() : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values...");
 	    exE.printStackTrace();
 	    final Object value = null;
 	    scalarEvent.setValue(value);
diff --git a/src/main/java/HdbArchiver/Collector/scalar/StringScalar_WO.java b/src/main/java/HdbArchiver/Collector/scalar/StringScalar_WO.java
index ffc6cc6c..c876a035 100644
--- a/src/main/java/HdbArchiver/Collector/scalar/StringScalar_WO.java
+++ b/src/main/java/HdbArchiver/Collector/scalar/StringScalar_WO.java
@@ -26,6 +26,8 @@
 //-======================================================================
 package HdbArchiver.Collector.scalar;
 
+import org.slf4j.Logger;
+
 import HdbArchiver.Collector.HdbModeHandler;
 import fr.esrf.Tango.AttrDataFormat;
 import fr.esrf.Tango.AttrWriteType;
@@ -36,7 +38,6 @@ import fr.esrf.TangoApi.events.TangoArchive;
 import fr.esrf.TangoApi.events.TangoArchiveEvent;
 import fr.esrf.tangoatk.core.IStringScalar;
 import fr.esrf.tangoatk.core.StringScalarEvent;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 
@@ -44,14 +45,13 @@ import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 //ELETTRA : Archiving Events
 //--------------------------------------------------------------------------//
 public class StringScalar_WO extends StringScalar {
-
     /**
 	 *
 	 */
     private static final long serialVersionUID = 4420340668566890187L;
 
-    public StringScalar_WO(final HdbModeHandler _modeHandler) {
-	super(_modeHandler);
+    public StringScalar_WO(final HdbModeHandler _modeHandler, Logger logger) {
+	super(_modeHandler, logger);
     }
 
     @Override
@@ -59,6 +59,7 @@ public class StringScalar_WO extends StringScalar {
 	return AttrWriteType._WRITE;
     }
 
+    @Override
     public void stringScalarChange(final StringScalarEvent event) {
 	final int tryNumber = DEFAULT_TRY_NUMBER;
 	final ScalarEvent scalarEvent = new ScalarEvent();
@@ -77,27 +78,24 @@ public class StringScalar_WO extends StringScalar {
 	    processEventScalar(scalarEvent, tryNumber);
 
 	} catch (final DevFailed devFailed) {
-	    System.err.println("StringScalar_WO.stringScalarChange : "
-		    + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values. Event : " + event
+	    System.err.println("StringScalar_WO.stringScalarChange : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values. Event : " + event
 		    + ", source " + event.getSource());
-	    printException(GlobalConst.DATA_TYPE_EXCEPTION, AttrDataFormat._SCALAR, scalarEvent
-		    .getAttribute_complete_name(), devFailed);
+	    printException(GlobalConst.DATA_TYPE_EXCEPTION, AttrDataFormat._SCALAR,
+		    scalarEvent.getAttribute_complete_name(), devFailed);
 	    final Object value = null;
 	    scalarEvent.setValue(value);
 	    processEventScalar(scalarEvent, tryNumber);
 	} catch (final Exception exE) {
-	    System.err.println("StringScalar_WO.stringScalarChange : "
-		    + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values...");
+	    System.err.println("StringScalar_WO.stringScalarChange : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values...");
 	    exE.printStackTrace();
 	    final Object value = null;
 	    scalarEvent.setValue(value);
 	    processEventScalar(scalarEvent, tryNumber);
 
 	    final String message = "Problem in StringScalar_WO/stringScalarChange";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, exE);
+	    logger.error(message, exE);
 	}
     }
 
@@ -110,6 +108,7 @@ public class StringScalar_WO extends StringScalar {
      * 
      *         manages archive events for StringScalar, Write Only.
      */
+    @Override
     public void archive(final TangoArchiveEvent event) {
 	final int tryNumber = DEFAULT_TRY_NUMBER;
 	DeviceAttribute attrib = null;
@@ -128,8 +127,7 @@ public class StringScalar_WO extends StringScalar {
 	    return;
 	} catch (final Exception e) /* Shouldn't be reached */
 	{
-	    System.out
-		    .println("StringScalar_WO.archive.getValue() failed, caught generic Exception, code failure");
+	    System.out.println("StringScalar_WO.archive.getValue() failed, caught generic Exception, code failure");
 	    e.printStackTrace();
 	    return;
 	}
@@ -146,8 +144,8 @@ public class StringScalar_WO extends StringScalar {
 			.println("\033[1;31mStringScalar_WO.java: event.getValue() or event.getSource() or event.getSource().getEventSupplier()) returned null!\033[0m");
 		return;
 	    }
-	    System.out.println("\033[1;35marchive() [String Scalar WO]: [EVENT]: \033[1;32m"
-		    + proxy.name() + "/" + attrib.getName() + "\033[0m");
+	    System.out.println("\033[1;35marchive() [String Scalar WO]: [EVENT]: \033[1;32m" + proxy.name() + "/"
+		    + attrib.getName() + "\033[0m");
 	    scalarEvent.setAttribute_complete_name(proxy.name() + "/" + attrib.getName());
 	    scalarEvent.setTimeStamp(attrib.getTime());
 	    scalarEvent.setData_format(AttrDataFormat._SCALAR);
@@ -161,16 +159,14 @@ public class StringScalar_WO extends StringScalar {
 	    scalarEvent.setValue(svalue); /* complete the scalarEvent */
 	    processEventScalar(scalarEvent, tryNumber);
 	} catch (final DevFailed devFailed) {
-	    print_exception("StringScalar_WO.archive() : " + GlobalConst.ARCHIVING_ERROR_PREFIX
-		    + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values...", devFailed);
+	    print_exception("StringScalar_WO.archive() : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values...", devFailed);
 	    final Object value = null;
 	    scalarEvent.setValue(value);
 	    processEventScalar(scalarEvent, tryNumber);
 	} catch (final Exception exE) {
-	    System.err.println("StringScalar_WO.archive() : " + GlobalConst.ARCHIVING_ERROR_PREFIX
-		    + "\r\n\t" + "Problem while reading "
-		    + scalarEvent.getAttribute_complete_name() + " values...");
+	    System.err.println("StringScalar_WO.archive() : " + GlobalConst.ARCHIVING_ERROR_PREFIX + "\r\n\t"
+		    + "Problem while reading " + scalarEvent.getAttribute_complete_name() + " values...");
 	    exE.printStackTrace();
 	    final Object value = null;
 	    scalarEvent.setValue(value);
diff --git a/src/main/java/HdbArchiver/Collector/spectrum/BooleanSpectrum_RO.java b/src/main/java/HdbArchiver/Collector/spectrum/BooleanSpectrum_RO.java
index c7c20000..9ea3735c 100644
--- a/src/main/java/HdbArchiver/Collector/spectrum/BooleanSpectrum_RO.java
+++ b/src/main/java/HdbArchiver/Collector/spectrum/BooleanSpectrum_RO.java
@@ -101,6 +101,8 @@ package HdbArchiver.Collector.spectrum;
 
 import java.util.HashMap;
 
+import org.slf4j.Logger;
+
 import HdbArchiver.HdbArchiver;
 import HdbArchiver.Collector.HdbCollector;
 import HdbArchiver.Collector.HdbModeHandler;
@@ -123,22 +125,20 @@ import fr.esrf.tangoatk.core.ErrorEvent;
 import fr.esrf.tangoatk.core.IBooleanSpectrum;
 import fr.esrf.tangoatk.core.IBooleanSpectrumListener;
 import fr.esrf.tangoatk.core.attribute.AttributeFactory;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.AttributeLightMode;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.SpectrumEvent_RO;
 
 public class BooleanSpectrum_RO extends HdbCollector implements IBooleanSpectrumListener, ITangoArchiveListener {
-
     /**
 	 *
 	 */
     private static final long serialVersionUID = -8045243244002335732L;
     private final HashMap<Device, TangoEventsAdapter> evtAdaptHMap;
 
-    public BooleanSpectrum_RO(final HdbModeHandler hdbModeHandler) {
-	super(hdbModeHandler);
+    public BooleanSpectrum_RO(final HdbModeHandler hdbModeHandler, Logger logger) {
+	super(hdbModeHandler, logger);
 
 	evtAdaptHMap = new HashMap<Device, TangoEventsAdapter>();
     }
@@ -476,8 +476,7 @@ public class BooleanSpectrum_RO extends HdbCollector implements IBooleanSpectrum
 	    super.setLastTimestamp(snapSpectrumEvent_RO);
 	} catch (final ArchivingException e) {
 	    final String message = "Problem (ArchivingException) storing BooleanSpectrum_RO value";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, e);
+	    logger.error(message, e);
 
 	    try_number--;
 	    if (try_number > 0) {
diff --git a/src/main/java/HdbArchiver/Collector/spectrum/BooleanSpectrum_RW.java b/src/main/java/HdbArchiver/Collector/spectrum/BooleanSpectrum_RW.java
index 7c254b2d..211bedb4 100644
--- a/src/main/java/HdbArchiver/Collector/spectrum/BooleanSpectrum_RW.java
+++ b/src/main/java/HdbArchiver/Collector/spectrum/BooleanSpectrum_RW.java
@@ -29,6 +29,8 @@ package HdbArchiver.Collector.spectrum;
 
 import java.util.HashMap;
 
+import org.slf4j.Logger;
+
 import HdbArchiver.HdbArchiver;
 import HdbArchiver.Collector.HdbCollector;
 import HdbArchiver.Collector.HdbModeHandler;
@@ -51,22 +53,20 @@ import fr.esrf.tangoatk.core.ErrorEvent;
 import fr.esrf.tangoatk.core.IBooleanSpectrum;
 import fr.esrf.tangoatk.core.IBooleanSpectrumListener;
 import fr.esrf.tangoatk.core.attribute.AttributeFactory;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.AttributeLightMode;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.SpectrumEvent_RW;
 
 public class BooleanSpectrum_RW extends HdbCollector implements IBooleanSpectrumListener, ITangoArchiveListener {
-
     /**
 	 *
 	 */
     private static final long serialVersionUID = -2171385818699543901L;
     private final HashMap<Device, TangoEventsAdapter> evtAdaptHMap;
 
-    public BooleanSpectrum_RW(final HdbModeHandler hdbModeHandler) {
-	super(hdbModeHandler);
+    public BooleanSpectrum_RW(final HdbModeHandler hdbModeHandler, Logger logger) {
+	super(hdbModeHandler, logger);
 
 	evtAdaptHMap = new HashMap<Device, TangoEventsAdapter>();
     }
@@ -411,8 +411,7 @@ public class BooleanSpectrum_RW extends HdbCollector implements IBooleanSpectrum
 	    super.setLastTimestamp(snapSpectrumEvent_RW);
 	} catch (final ArchivingException e) {
 	    final String message = "Problem (ArchivingException) storing BooleanSpectrum_RW value";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, e);
+	    logger.error(message, e);
 
 	    Util.out4.println("BooleanSpectrumEvent_RW.processEventSpectrum/ArchivingException");
 
diff --git a/src/main/java/HdbArchiver/Collector/spectrum/NumberSpectrum_RO.java b/src/main/java/HdbArchiver/Collector/spectrum/NumberSpectrum_RO.java
index 68dd050a..8792a7ef 100644
--- a/src/main/java/HdbArchiver/Collector/spectrum/NumberSpectrum_RO.java
+++ b/src/main/java/HdbArchiver/Collector/spectrum/NumberSpectrum_RO.java
@@ -104,6 +104,8 @@ package HdbArchiver.Collector.spectrum;
 
 import java.util.HashMap;
 
+import org.slf4j.Logger;
+
 import HdbArchiver.HdbArchiver;
 import HdbArchiver.Collector.HdbCollector;
 import HdbArchiver.Collector.HdbModeHandler;
@@ -127,22 +129,20 @@ import fr.esrf.tangoatk.core.INumberSpectrum;
 import fr.esrf.tangoatk.core.ISpectrumListener;
 import fr.esrf.tangoatk.core.NumberSpectrumEvent;
 import fr.esrf.tangoatk.core.attribute.AttributeFactory;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.AttributeLightMode;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.SpectrumEvent_RO;
 
 public class NumberSpectrum_RO extends HdbCollector implements ISpectrumListener, ITangoArchiveListener {
-
     /**
 	 *
 	 */
     private static final long serialVersionUID = -763959549098327291L;
     private final HashMap<Device, TangoEventsAdapter> evtAdaptHMap;
 
-    public NumberSpectrum_RO(final HdbModeHandler hdbModeHandler) {
-	super(hdbModeHandler);
+    public NumberSpectrum_RO(final HdbModeHandler hdbModeHandler, Logger logger) {
+	super(hdbModeHandler, logger);
 	evtAdaptHMap = new HashMap<Device, TangoEventsAdapter>();
     }
 
@@ -548,8 +548,7 @@ public class NumberSpectrum_RO extends HdbCollector implements ISpectrumListener
 	    super.setLastTimestamp(snapSpectrumEvent_RO);
 	} catch (final ArchivingException e) {
 	    final String message = "Problem (ArchivingException) storing NumberSpectrum_RO value";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, e);
+	    logger.error(message, e);
 
 	    try_number--;
 	    if (try_number > 0) {
diff --git a/src/main/java/HdbArchiver/Collector/spectrum/NumberSpectrum_RW.java b/src/main/java/HdbArchiver/Collector/spectrum/NumberSpectrum_RW.java
index 4fec5b6a..f17a5953 100644
--- a/src/main/java/HdbArchiver/Collector/spectrum/NumberSpectrum_RW.java
+++ b/src/main/java/HdbArchiver/Collector/spectrum/NumberSpectrum_RW.java
@@ -28,6 +28,8 @@ package HdbArchiver.Collector.spectrum;
 
 import java.util.HashMap;
 
+import org.slf4j.Logger;
+
 import HdbArchiver.HdbArchiver;
 import HdbArchiver.Collector.HdbCollector;
 import HdbArchiver.Collector.HdbModeHandler;
@@ -51,22 +53,20 @@ import fr.esrf.tangoatk.core.INumberSpectrum;
 import fr.esrf.tangoatk.core.ISpectrumListener;
 import fr.esrf.tangoatk.core.NumberSpectrumEvent;
 import fr.esrf.tangoatk.core.attribute.AttributeFactory;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.AttributeLightMode;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.SpectrumEvent_RW;
 
 public class NumberSpectrum_RW extends HdbCollector implements ISpectrumListener, ITangoArchiveListener {
-
     /**
 	 *
 	 */
     private static final long serialVersionUID = 6326850167925075893L;
     private final HashMap<Device, TangoEventsAdapter> evtAdaptHMap;
 
-    public NumberSpectrum_RW(final HdbModeHandler hdbModeHandler) {
-	super(hdbModeHandler);
+    public NumberSpectrum_RW(final HdbModeHandler hdbModeHandler, Logger logger) {
+	super(hdbModeHandler, logger);
 	evtAdaptHMap = new HashMap<Device, TangoEventsAdapter>();
     }
 
@@ -470,8 +470,7 @@ public class NumberSpectrum_RW extends HdbCollector implements ISpectrumListener
 	    super.setLastTimestamp(snapSpectrumEvent_RW);
 	} catch (final ArchivingException e) {
 	    final String message = "Problem (ArchivingException) storing NumberSpectrum_RW value";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, e);
+	    logger.error(message, e);
 
 	    Util.out4.println("SpectrumEvent_RW.processEventSpectrum/ArchivingException");
 
diff --git a/src/main/java/HdbArchiver/Collector/spectrum/StringSpectrum_RO.java b/src/main/java/HdbArchiver/Collector/spectrum/StringSpectrum_RO.java
index de3aa796..2dc6e740 100644
--- a/src/main/java/HdbArchiver/Collector/spectrum/StringSpectrum_RO.java
+++ b/src/main/java/HdbArchiver/Collector/spectrum/StringSpectrum_RO.java
@@ -101,6 +101,8 @@ package HdbArchiver.Collector.spectrum;
 
 import java.util.HashMap;
 
+import org.slf4j.Logger;
+
 import HdbArchiver.HdbArchiver;
 import HdbArchiver.Collector.HdbCollector;
 import HdbArchiver.Collector.HdbModeHandler;
@@ -123,22 +125,20 @@ import fr.esrf.tangoatk.core.IStringSpectrum;
 import fr.esrf.tangoatk.core.IStringSpectrumListener;
 import fr.esrf.tangoatk.core.StringSpectrumEvent;
 import fr.esrf.tangoatk.core.attribute.AttributeFactory;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.AttributeLightMode;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.SpectrumEvent_RO;
 
 public class StringSpectrum_RO extends HdbCollector implements IStringSpectrumListener, ITangoArchiveListener {
-
     /**
 	 *
 	 */
     private static final long serialVersionUID = -5473011082627947920L;
     private final HashMap<Device, TangoEventsAdapter> evtAdaptHMap;
 
-    public StringSpectrum_RO(final HdbModeHandler hdbModeHandler) {
-	super(hdbModeHandler);
+    public StringSpectrum_RO(final HdbModeHandler hdbModeHandler, Logger logger) {
+	super(hdbModeHandler, logger);
 	evtAdaptHMap = new HashMap<Device, TangoEventsAdapter>();
     }
 
@@ -466,8 +466,7 @@ public class StringSpectrum_RO extends HdbCollector implements IStringSpectrumLi
 	    super.setLastTimestamp(snapSpectrumEvent_RO);
 	} catch (final ArchivingException e) {
 	    final String message = "Problem (ArchivingException) storing StringSpectrum_RO value";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, e);
+	    logger.error(message, e);
 
 	    try_number--;
 	    if (try_number > 0) {
diff --git a/src/main/java/HdbArchiver/Collector/spectrum/StringSpectrum_RW.java b/src/main/java/HdbArchiver/Collector/spectrum/StringSpectrum_RW.java
index f8f968c9..e0105f03 100644
--- a/src/main/java/HdbArchiver/Collector/spectrum/StringSpectrum_RW.java
+++ b/src/main/java/HdbArchiver/Collector/spectrum/StringSpectrum_RW.java
@@ -29,6 +29,7 @@ package HdbArchiver.Collector.spectrum;
 import java.util.HashMap;
 
 import org.apache.commons.lang.ArrayUtils;
+import org.slf4j.Logger;
 
 import HdbArchiver.HdbArchiver;
 import HdbArchiver.Collector.HdbCollector;
@@ -52,7 +53,6 @@ import fr.esrf.tangoatk.core.IStringSpectrum;
 import fr.esrf.tangoatk.core.IStringSpectrumListener;
 import fr.esrf.tangoatk.core.StringSpectrumEvent;
 import fr.esrf.tangoatk.core.attribute.AttributeFactory;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.AttributeLightMode;
@@ -66,8 +66,8 @@ public class StringSpectrum_RW extends HdbCollector implements IStringSpectrumLi
     private static final long serialVersionUID = 5320159634498744542L;
     private final HashMap<Device, TangoEventsAdapter> evtAdaptHMap;
 
-    public StringSpectrum_RW(final HdbModeHandler hdbModeHandler) {
-	super(hdbModeHandler);
+    public StringSpectrum_RW(final HdbModeHandler hdbModeHandler, Logger logger) {
+	super(hdbModeHandler, logger);
 	evtAdaptHMap = new HashMap<Device, TangoEventsAdapter>();
     }
 
@@ -401,8 +401,7 @@ public class StringSpectrum_RW extends HdbCollector implements IStringSpectrumLi
 	    super.setLastTimestamp(snapSpectrumEvent_RW);
 	} catch (final ArchivingException e) {
 	    final String message = "Problem (ArchivingException) storing StringSpectrum_RW value";
-	    super.logger.trace(ILogger.LEVEL_ERROR, message);
-	    super.logger.trace(ILogger.LEVEL_ERROR, e);
+	    logger.error(message, e);
 
 	    Util.out4.println("StringSpectrumEvent_RW.processEventSpectrum/ArchivingException");
 
diff --git a/src/main/java/HdbArchiver/HdbArchiver.java b/src/main/java/HdbArchiver/HdbArchiver.java
index 4b197135..5833a7ac 100644
--- a/src/main/java/HdbArchiver/HdbArchiver.java
+++ b/src/main/java/HdbArchiver/HdbArchiver.java
@@ -358,6 +358,7 @@
 
 package HdbArchiver;
 
+import java.io.IOException;
 import java.sql.Timestamp;
 import java.util.Arrays;
 import java.util.Enumeration;
@@ -370,6 +371,7 @@ import java.util.concurrent.Executors;
 
 import org.omg.CORBA.SystemException;
 import org.omg.CORBA.UserException;
+import org.slf4j.Logger;
 import org.tango.utils.DevFailedUtils;
 
 import HdbArchiver.Collector.DbProxy;
@@ -385,9 +387,8 @@ import fr.esrf.TangoDs.DeviceImpl;
 import fr.esrf.TangoDs.Except;
 import fr.esrf.TangoDs.TangoConst;
 import fr.esrf.TangoDs.Util;
+import fr.soleil.archiving.utils.LoggingUtils;
 import fr.soleil.archiving.utils.TangoStateUtils;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.LoggerFactory;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingApi.ConfigConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingManagerApi.ArchivingManagerApiRef;
@@ -547,7 +548,7 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
     private final Set<String> koAttributes = new HashSet<String>();
     private final Set<String> okAttributes = new HashSet<String>();
 
-    private fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger logger;
+    private Logger logger;
     private String dbSchema;
     private boolean isHighRate;
     // --------------------------------------
@@ -611,41 +612,44 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
 
 	get_logger().info("HdbArchiver() create " + device_name);
 
-	collectorFactory = new HdbCollectorFactory();
 	// Initialise variables to default values
 	// -------------------------------------------
 	get_device_property();
 
+	try {
+	    logger = LoggingUtils.configureLogging(device_name, hasDiary, diaryPath, diaryLogLevel);
+	} catch (IOException e) {
+	    TangoStateUtils.setFault(this, "logging configuration failed");
+	}
+
+	collectorFactory = new HdbCollectorFactory(logger);
 	attr_image_charge_read = 0;
 	attr_spectrum_charge_read = 0;
 	attr_scalar_charge_read = 0;
 	koAttributes.clear();
 	okAttributes.clear();
-	get_logger().info("DbHost = " + dbHost);
-	get_logger().info("DbName = " + dbName);
-	get_logger().info("dbUser = " + dbUser);
-	get_logger().info("DbPassword = " + dbPassword);
-	get_logger().info("RacConnection  = " + RacConnection);
-	get_logger().info("HasThreadedStartup = " + hasThreadedStartup);
-	get_logger().info("isDedicated = " + isDedicated);
-	get_logger().info("reservedAttributes = " + Arrays.toString(reservedAttributes));
-	get_logger().info("diaryPath = " + diaryPath);
-	get_logger().info("hasDiary = " + hasDiary);
-	get_logger().info("diaryLogLevel = " + diaryLogLevel);
-
-	// DBTools.setWarnable(this);
-
-	logger = LoggerFactory.getImpl(device_name, diaryPath, hasDiary);
-	logger.setTraceLevel(diaryLogLevel);
-	dbProxy = new DbProxy(logger, dbHost, dbName, dbSchema, dbUser, dbPassword, RacConnection);
-	if (!dbProxy.is_db_connected()) {
-	    TangoStateUtils.setFault(this, "Historical database connection failed");
-	    get_logger().error("ERROR : Database unconnected !!");
-	} else {
+	logger.info("DbHost = " + dbHost);
+	logger.info("DbName = " + dbName);
+	logger.info("dbUser = " + dbUser);
+	logger.info("DbPassword = " + dbPassword);
+	logger.info("RacConnection  = " + RacConnection);
+	logger.info("HasThreadedStartup = " + hasThreadedStartup);
+	logger.info("isDedicated = " + isDedicated);
+	logger.info("reservedAttributes = " + Arrays.toString(reservedAttributes));
+	logger.info("diaryPath = " + diaryPath);
+	logger.info("hasDiary = " + hasDiary);
+	logger.info("diaryLogLevel = " + diaryLogLevel);
+
+	try {
+	    dbProxy = new DbProxy(dbHost, dbName, dbSchema, dbUser, dbPassword, RacConnection, logger);
 	    setControlMode(safetyPeriod);
 	    // start archiving in a thread
 	    Executors.newSingleThreadExecutor().submit(new InitDeviceTask());
+	} catch (ArchivingException e) {
+	    TangoStateUtils.setFault(this, "Historical database connection failed: " + e);
+	    logger.error("ERROR : Database unconnected !!", e);
 	}
+	logger.debug("init done");
     }
 
     /**
@@ -676,7 +680,7 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
 	    try {
 		myCurrentTasks = dbProxy.getArchiverCurrentTasks(device_name);
 	    } catch (ArchivingException e) {
-		logger.trace(ILogger.LEVEL_ERROR, "cannot getArchiverCurrentTasks " + e);
+		logger.debug("cannot getArchiverCurrentTasks " + e);
 		TangoStateUtils.setFault(HdbArchiver.this, e.getMessage());
 	    }
 
@@ -745,7 +749,7 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
 	reservedAttributes = null;
 	diaryPath = null;
 	hasDiary = false;
-	diaryLogLevel = ILogger.DEBUG;
+	diaryLogLevel = "DEBUG";
 	isHighRate = false;
 
 	// Read device properties from database.(Automatic code generation)
@@ -1030,11 +1034,11 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
 
     private void triggerArchiving(final String[] argin, final boolean updateAMTTable) throws DevFailed {
 	TangoStateUtils.setRunning(this);
-	logger.trace(ILogger.LEVEL_INFO, "trigger_archive_conf - in");
+	logger.debug("trigger_archive_conf - in");
 	final ArchivingException archivingException = new ArchivingException();
 
 	final ArchivingMessConfig archivingMessConfig = ArchivingMessConfig.creationWithFullInformation(argin);
-	archivingMessConfig.filter(isDedicated, reservedAttributes, logger);
+	archivingMessConfig.filter(isDedicated, reservedAttributes);
 	for (final Enumeration<String> my_EnumAttributes = archivingMessConfig.getAttributeListKeys(); my_EnumAttributes
 		.hasMoreElements();) {
 	    final String attributeName = String.valueOf(my_EnumAttributes.nextElement());
@@ -1044,7 +1048,7 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
 	    attributeLightMode.setTrigger_time(new Timestamp(System.currentTimeMillis()));
 	    boolean attSupport = false;
 	    final String attCompleteName = attributeLightMode.getAttribute_complete_name();
-	    logger.trace(ILogger.LEVEL_INFO, "managing " + attCompleteName);
+	    logger.debug("managing " + attCompleteName);
 	    try {
 		attSupport = AttributeSupport.checkAttributeSupport(attCompleteName, attributeLightMode.getData_type(),
 			attributeLightMode.getData_format(), attributeLightMode.getWritable());
@@ -1088,29 +1092,29 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
 		    // start collector
 		    final HdbCollector m_collector = collectorFactory.get(attributeLightMode);
 		    if (m_collector == null) {
-			logger.trace(ILogger.LEVEL_INFO, "createCollectorAndAddSource " + attCompleteName);
-			collectorFactory.createCollectorAndAddSource(attributeLightMode, logger, dbProxy);
+			logger.debug("createCollectorAndAddSource " + attCompleteName);
+			collectorFactory.createCollectorAndAddSource(attributeLightMode, dbProxy);
 		    } else {
-			logger.trace(ILogger.LEVEL_INFO, "addSource " + attCompleteName);
+			logger.debug("addSource " + attCompleteName);
 			m_collector.addSource(attributeLightMode);
 		    }
 		    // update AMT table in db with attribute config
 		    if (updateAMTTable) {
 			if (dbProxy.isArchived(attCompleteName, device_name)) {
-			    logger.trace(ILogger.LEVEL_INFO, "updateModeRecord - in");
+			    logger.debug("updateModeRecord - in");
 			    dbProxy.updateModeRecord(attCompleteName);
-			    logger.trace(ILogger.LEVEL_INFO, "updateModeRecord - out");
+			    logger.debug("updateModeRecord - out");
 			}
 
-			logger.trace(ILogger.LEVEL_INFO, "insertModeRecord - in");
+			logger.debug("insertModeRecord - in");
 			dbProxy.insertModeRecord(attributeLightMode);
-			logger.trace(ILogger.LEVEL_INFO, "insertModeRecord - out");
+			logger.debug("insertModeRecord - out");
 		    }
 
 		    // update period in dbProxy, used in cmd
 		    // retry_for_ko_attributes
 		    final int period = attributeLightMode.getMode().getModeP().getPeriod();
-		    logger.trace(ILogger.LEVEL_INFO, attCompleteName + "'s period is " + period);
+		    logger.debug(attCompleteName + "'s period is " + period);
 		    dbProxy.setPeriodForAttribute(attCompleteName, period);
 
 		    // --------------------------------------------------------------------------//
@@ -1133,7 +1137,7 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
 		}
 		okAttributes.add(attCompleteName.toLowerCase());
 		koAttributes.remove(attCompleteName.toLowerCase());
-		logger.trace(ILogger.LEVEL_INFO, "OK: " + attCompleteName);
+		logger.debug("OK: " + attCompleteName);
 	    } catch (final ArchivingException e) {
 		try {
 		    collectorFactory.remove(attCompleteName);
@@ -1142,10 +1146,10 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
 		e.printStackTrace();
 		final String message = GlobalConst.ARCHIVING_ERROR_PREFIX + " : ";
 		archivingException.addStack(message, e);
-		logger.trace(ILogger.LEVEL_ERROR, e);
+		logger.error("start failed", e);
 		koAttributes.add(attCompleteName.toLowerCase());
 		okAttributes.remove(attCompleteName.toLowerCase());
-		logger.trace(ILogger.LEVEL_INFO, "KO: " + attCompleteName);
+		logger.error("KO: " + attCompleteName);
 	    } catch (Exception e) {
 		try {
 		    collectorFactory.remove(attCompleteName);
@@ -1154,17 +1158,17 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
 		koAttributes.add(attCompleteName.toLowerCase());
 		okAttributes.remove(attCompleteName.toLowerCase());
 		e.printStackTrace();
-		logger.trace(ILogger.LEVEL_ERROR, "KO " + attCompleteName + " unexpected " + e);
+		logger.error("KO " + attCompleteName + " unexpected " + e);
 	    }
 	}
 
 	computeLoads();
 	if (!archivingException.getMessage().equals("")) {
-	    logger.trace(ILogger.LEVEL_INFO, "trigger_archive_conf ERROR - out");
+	    logger.error("trigger_archive_conf ERROR - out");
 	    throw archivingException.toTangoException();
 	}
 
-	logger.trace(ILogger.LEVEL_INFO, "trigger_archive_conf - out");
+	logger.debug("trigger_archive_conf - out");
     }
 
     // =========================================================
@@ -1223,14 +1227,14 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
 	// TangoStateUtils.isAllowed(this);
 	// TangoStateUtils.setRunning(this);
 	try {
-	    logger.trace(ILogger.LEVEL_INFO, "stop_archive_conf - in");
+	    logger.debug("stop_archive_conf - in");
 	    final Vector<AttributeLightMode> myConf = ArchivingManagerApiRef.stoppingVector(argin);
 	    for (int i = 0; i < myConf.size(); i++) {
 		stop_archive_att(myConf.elementAt(i).toArray());
 	    }
 
 	} finally {
-	    logger.trace(ILogger.LEVEL_INFO, "stop_archive_conf - out");
+	    logger.debug("stop_archive_conf - out");
 	}
     }
 
@@ -1250,7 +1254,7 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
     public short retry_for_attribute(final String attributeToRetry) throws DevFailed {
 	TangoStateUtils.isAllowed(this);
 	if (attributeToRetry == null || attributeToRetry.equals("")) {
-	    logger.trace(ILogger.LEVEL_ERROR, "no retry done - no attribute");
+	    logger.debug("no retry done - no attribute");
 	    return NA;
 	}
 	try {
@@ -1277,17 +1281,15 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
 
 		return SUCCEEDED;
 	    } else {
-		logger.trace(ILogger.LEVEL_ERROR, attributeToRetry + " no retry done - config is empty");
+		logger.debug(attributeToRetry + " no retry done - config is empty");
 		return NA;
 	    }
 	} catch (final DevFailed e) {
 	    final String message = DBTools.getCompleteMessage(e);
-	    logger.trace(ILogger.LEVEL_ERROR, "Failed during retry_for_attribute ( " + attributeToRetry + " ):");
-	    logger.trace(ILogger.LEVEL_ERROR, message);
+	    logger.error("Failed during retry_for_attribute ( " + attributeToRetry + " ):", message);
 	    return FAILED;
 	} catch (final ArchivingException e) {
-	    logger.trace(ILogger.LEVEL_ERROR, "Failed during retry_for_attribute ( " + attributeToRetry + " ):");
-	    logger.trace(ILogger.LEVEL_ERROR, e);
+	    logger.error("Failed during retry_for_attribute ( " + attributeToRetry + " ):", e);
 	    return FAILED;
 	}
     }
@@ -1355,8 +1357,8 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
 	    }
 	} catch (final DevFailed e) {
 	    final String message = DBTools.getCompleteMessage(e);
-	    logger.trace(ILogger.LEVEL_ERROR, message);
-	    logger.trace(ILogger.LEVEL_ERROR, "Failed during retry_for_attributes ( " + argsBuffer.toString() + " ):");
+	    logger.error(message);
+	    logger.error("Failed during retry_for_attributes ( " + argsBuffer.toString() + " ):");
 	    return FAILED;
 	} catch (final ArchivingException t) {
 	    final DevFailed devFailed = new DevFailed();
@@ -1364,8 +1366,8 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
 	    devFailed.setStackTrace(t.getStackTrace());
 
 	    final String message = DBTools.getCompleteMessage(devFailed);
-	    logger.trace(ILogger.LEVEL_ERROR, message);
-	    logger.trace(ILogger.LEVEL_ERROR, "Failed during retry_for_attributes ( " + argsBuffer.toString() + " ):");
+	    logger.error(message);
+	    logger.error("Failed during retry_for_attributes ( " + argsBuffer.toString() + " ):");
 
 	    return FAILED;
 	}
@@ -1389,12 +1391,12 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
      */
     // =========================================================
     public short retry_for_ko_attributes() throws DevFailed {
-	logger.trace(ILogger.LEVEL_DEBUG, "retry_for_ko_attributes");
+	logger.debug("retry_for_ko_attributes");
 	TangoStateUtils.isAllowed(this);
 	try {
 	    final Vector<String>[] listOfControlledAttributes = getControlledAttributes();
 	    final Vector<String> listOfKOAttributes = listOfControlledAttributes[0];
-	    logger.trace(ILogger.LEVEL_DEBUG, "retry_for_ko_attributes " + listOfKOAttributes);
+	    logger.debug("retry_for_ko_attributes " + listOfKOAttributes);
 	    final String[] ret = new String[listOfKOAttributes.size()];
 	    for (int i = 0; i < listOfKOAttributes.size(); i++) {
 		ret[i] = listOfKOAttributes.elementAt(i);
@@ -1403,8 +1405,8 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
 	    return retry_for_attributes(ret);
 	} catch (final DevFailed e) {
 	    final String message = DBTools.getCompleteMessage(e);
-	    logger.trace(ILogger.LEVEL_ERROR, message);
-	    logger.trace(ILogger.LEVEL_ERROR, "Failed during retry_for_ko_attributes ");
+	    logger.error(message);
+	    logger.error("Failed during retry_for_ko_attributes ");
 	    return FAILED;
 	} catch (final ArchivingException t) {
 	    final DevFailed devFailed = new DevFailed();
@@ -1412,8 +1414,8 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
 	    devFailed.setStackTrace(t.getStackTrace());
 
 	    final String message = DBTools.getCompleteMessage(devFailed);
-	    logger.trace(ILogger.LEVEL_ERROR, message);
-	    logger.trace(ILogger.LEVEL_ERROR, "Failed during retry_for_ko_attributes ");
+	    logger.error(message);
+	    logger.error("Failed during retry_for_ko_attributes ");
 
 	    return FAILED;
 	}
@@ -1728,8 +1730,8 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
     private void logRetry(final ArchivingMessConfig archivingMessConfig, final String methodName) {
 	final String retryContent = archivingMessConfig.toString();
 	final String openingLine = methodName + " - retry for the following attributes";
-	logger.trace(ILogger.LEVEL_INFO, openingLine);
-	logger.trace(ILogger.LEVEL_INFO, retryContent);
+	logger.debug(openingLine);
+	logger.debug(retryContent);
     }
 
     private void computeLoads() {
@@ -1755,12 +1757,12 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
     public void stop_archive_att(final String[] argin) throws DevFailed {
 	TangoStateUtils.isAllowed(this);
 	TangoStateUtils.setRunning(this);
-	logger.trace(ILogger.LEVEL_INFO, "stop_archive_att - in");
+	logger.debug("stop_archive_att - in");
 	try {
 	    String attributeName = argin[0];
 	    // final AttributeLightMode attributeLightMode =
 	    // AttributeLightMode.creationWithFullInformation(argin);
-	    logger.trace(ILogger.LEVEL_INFO, "attribute: " + attributeName);
+	    logger.debug("attribute: " + attributeName);
 	    if (koAttributes.contains(attributeName.toLowerCase())
 		    || okAttributes.contains(attributeName.toLowerCase())) {
 		// stop only if attribute is managed by this archiver
@@ -1775,13 +1777,13 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
 		DevFailedUtils.throwDevFailed(attributeName + " is not archived by this device");
 	    }
 	} catch (final ArchivingException e) {
-	    logger.trace(ILogger.LEVEL_ERROR, e);
+	    logger.error("stop failed", e);
 	    e.printStackTrace();
 	    throw e.toTangoException();
 	} finally {
 	    computeLoads();
 	    TangoStateUtils.updateState(this, koAttributes, okAttributes);
-	    logger.trace(ILogger.LEVEL_INFO, "stop_archive_att - out");
+	    logger.debug("stop_archive_att - out");
 	}
     }
 
diff --git a/src/main/java/HdbArchivingWatcher/HdbArchivingWatcher.java b/src/main/java/HdbArchivingWatcher/HdbArchivingWatcher.java
index 64feb150..03673009 100644
--- a/src/main/java/HdbArchivingWatcher/HdbArchivingWatcher.java
+++ b/src/main/java/HdbArchivingWatcher/HdbArchivingWatcher.java
@@ -28,7 +28,6 @@ import fr.esrf.TangoDs.Attribute;
 import fr.esrf.TangoDs.DeviceClass;
 import fr.esrf.TangoDs.Except;
 import fr.esrf.TangoDs.Util;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.hdbtdbArchivingApi.ArchivingApi.ConfigConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingManagerApi.HdbArchivingManagerApiRef;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Mode.Mode;
@@ -693,9 +692,7 @@ public class HdbArchivingWatcher extends AbsArchivingWatcher {
 		}
 	    }
 	} catch (final Exception df) {
-	    logger.trace(ILogger.LEVEL_ERROR, "get_all_archiving_attributes/error! VVVVVVVVVVVVVVVVV");
-	    logger.trace(ILogger.LEVEL_ERROR, df);
-	    logger.trace(ILogger.LEVEL_ERROR, "get_all_archiving_attributes/error! ^^^^^^^^^^^^^^^^^");
+	    logger.error("get_all_archiving_attributes/error! V", df);
 	    Tools.throwDevFailed(df);
 	}
 	return ret;
diff --git a/src/main/java/HdbExtractor/HdbExtractor.java b/src/main/java/HdbExtractor/HdbExtractor.java
index af836ce8..c42a4e8f 100644
--- a/src/main/java/HdbExtractor/HdbExtractor.java
+++ b/src/main/java/HdbExtractor/HdbExtractor.java
@@ -1377,8 +1377,6 @@ public class HdbExtractor extends DeviceImpl
 
 		e.printStackTrace();
 		throw e.toTangoException();
-	    } catch (Exception e) {
-		e.printStackTrace();
 	    }
 	}
 	get_logger().info("Exiting get_att_data_between_dates()");
@@ -1414,7 +1412,11 @@ public class HdbExtractor extends DeviceImpl
 		String[] values = new String[tuples.length];
 		for (int i = 0; i < tuples.length; i++) {
 		    timeStamps[i] = tuples[i].time;
-		    values[i] = tuples[i].value[0].toString();
+		    if (tuples[i].value[0] == null) {
+			values[i] = "null";
+		    } else {
+			values[i] = tuples[i].value[0].toString();
+		    }
 		}
 		argout = new DevVarDoubleStringArray(timeStamps, values);
 	    } catch (final ArchivingException e) {
@@ -2331,11 +2333,20 @@ public class HdbExtractor extends DeviceImpl
 
 	int data_type;
 	data_type = dbData.getData_type();
-	// The STATE type attributes are translated in STRING TYPE because
-	// the State type is not well
-	// managed in Tango layers
+
 	if (data_type == TangoConst.Tango_DEV_STATE) {
+	    // The STATE type attributes are translated in STRING TYPE because
+	    // the State type is not well
+	    // managed in Tango layers
 	    data_type = TangoConst.Tango_DEV_STRING;
+	} else if (data_type == TangoConst.Tango_DEV_USHORT || data_type == TangoConst.Tango_DEV_UCHAR) {
+	    // U_* types are not supported by polling buffer, so use another
+	    // supported type
+	    data_type = TangoConst.Tango_DEV_SHORT;
+	} else if (data_type == TangoConst.Tango_DEV_ULONG) {
+	    data_type = TangoConst.Tango_DEV_LONG;
+	} else if (data_type == TangoConst.Tango_DEV_ULONG64) {
+	    data_type = TangoConst.Tango_DEV_LONG64;
 	}
 
 	// Create the attribute depends on DataFormat
@@ -2412,6 +2423,8 @@ public class HdbExtractor extends DeviceImpl
 	    } else {
 		tg_1.fill_attr_polling_buffer(this, random_name_1, dbData.getDataAsTimedAttrData());
 	    }
+	} catch (DevFailed e) {
+	    throw e;
 	} catch (Exception e) {
 	    // FIXME java.lang.ArrayIndexOutOfBoundsException thrown when some
 	    // data are empty.
diff --git a/src/main/java/TdbArchiver/Collector/DbProxy.java b/src/main/java/TdbArchiver/Collector/DbProxy.java
index 23cd6598..457bf9d0 100644
--- a/src/main/java/TdbArchiver/Collector/DbProxy.java
+++ b/src/main/java/TdbArchiver/Collector/DbProxy.java
@@ -73,7 +73,6 @@ import fr.esrf.Tango.DevFailed;
 import fr.esrf.Tango.ErrSeverity;
 import fr.esrf.TangoApi.Database;
 import fr.esrf.TangoDs.Util;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingApi.ConfigConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingApi.DataBaseManager;
@@ -84,21 +83,13 @@ import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.AttributeLightMode;
 
 public class DbProxy {
-    private IArchivingManagerApiRef manager;
-    private ILogger logger;
+    private final IArchivingManagerApiRef manager;
 
-    public DbProxy(final ILogger logger, final String myDbHost, final String myDbName, final String mySchemaName,
-	    final String myDbUser, final String myDbPassword, final boolean myRacConnection) {
-	try {
-	    manager = ArchivingManagerApiRefFactory.getInstance(ConfigConst.TDB);
-	    manager.ArchivingConfigureWithoutArchiverListInit(myDbHost, myDbName, mySchemaName, myDbUser, myDbPassword,
-		    myRacConnection, false, true);
-	    this.logger = logger;
-	    ((TDBDataBaseManager) manager.getDataBase()).getTdbExport().setLogger(this.logger);
-
-	} catch (final ArchivingException e) {
-	    System.err.println(e.toString());
-	}
+    public DbProxy(final String myDbHost, final String myDbName, final String mySchemaName, final String myDbUser,
+	    final String myDbPassword, final boolean myRacConnection) throws ArchivingException {
+	manager = ArchivingManagerApiRefFactory.getInstance(ConfigConst.TDB);
+	manager.ArchivingConfigureWithoutArchiverListInit(myDbHost, myDbName, mySchemaName, myDbUser, myDbPassword,
+		myRacConnection, false, true);
     }
 
     public boolean is_db_connected() {
diff --git a/src/main/java/TdbArchiver/Collector/TdbCollector.java b/src/main/java/TdbArchiver/Collector/TdbCollector.java
index d734bc86..75ea35d2 100644
--- a/src/main/java/TdbArchiver/Collector/TdbCollector.java
+++ b/src/main/java/TdbArchiver/Collector/TdbCollector.java
@@ -152,6 +152,8 @@ import java.util.Hashtable;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.slf4j.Logger;
+
 import Common.Archiver.Collector.ArchiverCollector;
 import TdbArchiver.Collector.Tools.FileTools;
 import fr.esrf.Tango.AttrWriteType;
@@ -160,7 +162,6 @@ import fr.esrf.TangoDs.Util;
 import fr.esrf.tangoatk.core.ConnectionException;
 import fr.esrf.tangoatk.core.ErrorEvent;
 import fr.esrf.tangoatk.core.IEntity;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingEvent;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
@@ -207,8 +208,8 @@ public abstract class TdbCollector extends ArchiverCollector {
     private final AttrWriteType writableType;
 
     public TdbCollector(final TdbModeHandler _modeHandler, final String currentDsPath, final String currentDbPath,
-	    final AttrWriteType writableType) {
-	super(_modeHandler);
+	    final AttrWriteType writableType, Logger logger) {
+	super(_modeHandler, logger);
 	this.writableType = writableType;
 	m_currentDbPath = currentDbPath;
 	m_currentDsPath = currentDsPath;
@@ -258,7 +259,7 @@ public abstract class TdbCollector extends ArchiverCollector {
 
 	    isFirstValueList.put(attName.toLowerCase(), true);
 	} catch (final ConnectionException e) {
-	    super.logger.trace(ILogger.LEVEL_WARNING, e);
+	    logger.error("add source failed", e);
 
 	    final String message = GlobalConst.ARCHIVING_ERROR_PREFIX + " : " + "Failed adding '"
 		    + attributeLightMode.getAttribute_complete_name() + "' as source";
@@ -266,9 +267,8 @@ public abstract class TdbCollector extends ArchiverCollector {
 	    final String desc = "Failed while executing BooleanScalar.addSource() method...";
 	    throw new ArchivingException(message, reason, ErrSeverity.WARN, desc, "", e);
 	} catch (final Exception e) {
-	    super.logger.trace(ILogger.LEVEL_WARNING,
-		    "Unexpected exception during addSource:" + attributeLightMode.getAttribute_complete_name());
-	    super.logger.trace(ILogger.LEVEL_WARNING, e);
+	    logger.error("Unexpected exception during addSource:" + attributeLightMode.getAttribute_complete_name());
+	    logger.error("Unexpected exception during addSource", e);
 	} finally {
 	    startCollecting();
 	}
@@ -322,9 +322,9 @@ public abstract class TdbCollector extends ArchiverCollector {
     public abstract void removeListeners(IEntity attribute) throws ArchivingException;
 
     public String exportFile2Db(final String attributeName) throws IOException, ArchivingException {
-	logger.trace(ILogger.LEVEL_DEBUG, "XXXXXXX FORCING export for " + attributeName);
+	logger.debug("XXXXXXX FORCING export for " + attributeName);
 	final String result = filesNames.get(attributeName.toLowerCase()).switchFile();
-	logger.trace(ILogger.LEVEL_DEBUG, "Export forced done for " + attributeName + " - " + result);
+	logger.debug("Export forced done for " + attributeName + " - " + result);
 	return result;
     }
 
@@ -385,8 +385,8 @@ public abstract class TdbCollector extends ArchiverCollector {
 
 	final long newTime = scalarEvent.getTimeStamp();
 	if (newTime == 0) {
-	    logger.trace(ILogger.LEVEL_WARNING, "NOARCHIVING - received a zero timestamp for " + name
-		    + " - tableName: " + scalarEvent.getTable_name());
+	    logger.warn("NOARCHIVING - received a zero timestamp for " + name + " - tableName: "
+		    + scalarEvent.getTable_name());
 	    return false;
 	}
 
@@ -396,21 +396,21 @@ public abstract class TdbCollector extends ArchiverCollector {
 	    return true;
 	}
 
-	final boolean isAlreadyRegisteredDate = lastTimestampStack.containsDate(newTime, logger);
+	final boolean isAlreadyRegisteredDate = lastTimestampStack.containsDate(newTime);
 	// System.out.println (
 	// "isDataArchivableTimestampWise/isAlreadyRegisteredDate/"+isAlreadyRegisteredDate);
 	if (isAlreadyRegisteredDate) {
-	    logger.trace(ILogger.LEVEL_DEBUG, "NOARCHIVING - AlreadyRegisteredDate - attribute: " + name
-		    + " - timestamp: " + new Timestamp(newTime));
+	    logger.warn("NOARCHIVING - AlreadyRegisteredDate - attribute: " + name + " - timestamp: "
+		    + new Timestamp(newTime));
 	    return false;
 	}
-	final boolean isValidRegisteredDate = lastTimestampStack.validateDate(newTime, logger);
+	final boolean isValidRegisteredDate = lastTimestampStack.validateDate(newTime);
 	// System.out.println (
 	// "isDataArchivableTimestampWise/isAlreadyRegisteredDate/"+isAlreadyRegisteredDate);
 
 	if (!isValidRegisteredDate) {
-	    logger.trace(ILogger.LEVEL_DEBUG, "NOARCHIVING - not ValidRegisteredDate - attribute: " + name
-		    + " - timestamp: " + new Timestamp(newTime));
+	    logger.warn("NOARCHIVING - not ValidRegisteredDate - attribute: " + name + " - timestamp: "
+		    + new Timestamp(newTime));
 	    return false;
 	}
 	// m_logger.trace(ILogger.LEVEL_DEBUG, name + " timestamp OK: " + new
diff --git a/src/main/java/TdbArchiver/Collector/TdbCollectorFactory.java b/src/main/java/TdbArchiver/Collector/TdbCollectorFactory.java
index 71295acd..9bb38bc0 100644
--- a/src/main/java/TdbArchiver/Collector/TdbCollectorFactory.java
+++ b/src/main/java/TdbArchiver/Collector/TdbCollectorFactory.java
@@ -121,6 +121,8 @@ import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.slf4j.Logger;
+
 import TdbArchiver.Collector.Tools.SuperMode;
 import TdbArchiver.Collector.image.Image_RO;
 import TdbArchiver.Collector.scalar.BooleanScalar;
@@ -134,7 +136,6 @@ import fr.esrf.Tango.AttrDataFormat;
 import fr.esrf.Tango.AttrWriteType;
 import fr.esrf.Tango.ErrSeverity;
 import fr.esrf.TangoDs.TangoConst;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.AttributeLightMode;
@@ -142,13 +143,13 @@ import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.AttributeSupport;
 
 public class TdbCollectorFactory {
     private final Map<SuperMode, TdbCollector> tableCollector = new HashMap<SuperMode, TdbCollector>();
-    private final ILogger m_logger;
+    private final Logger logger;
 
     private String m_currentDbPath = "";
     private String m_currentDsPath = "";
 
-    public TdbCollectorFactory(final ILogger logger, final String dsPath, final String dbPath) {
-	m_logger = logger;
+    public TdbCollectorFactory(final Logger logger, final String dsPath, final String dbPath) {
+	this.logger = logger;
 	m_currentDbPath = dbPath;
 	m_currentDsPath = dsPath;
     }
@@ -211,7 +212,7 @@ public class TdbCollectorFactory {
 		}
 
 		collector.setDbProxy(dbProxy);
-		collector.setDiaryLogger(m_logger);
+		// collector.setDiaryLogger(logger);
 
 		try {
 		    collector.addSource(attributeLightMode, attributePerFile);
@@ -259,19 +260,19 @@ public class TdbCollectorFactory {
 		case TangoConst.Tango_DEV_LONG64:
 		case TangoConst.Tango_DEV_UCHAR:
 		    collector = new NumberScalar(modeHandler, m_currentDsPath, m_currentDbPath,
-			    AttrWriteType.from_int(writable));
+			    AttrWriteType.from_int(writable), logger);
 		    break;
 		case TangoConst.Tango_DEV_BOOLEAN:
 		    collector = new BooleanScalar(modeHandler, m_currentDsPath, m_currentDbPath,
-			    AttrWriteType.from_int(writable));
+			    AttrWriteType.from_int(writable), logger);
 		    break;
 		case TangoConst.Tango_DEV_STATE:
 		    collector = new StateScalar(modeHandler, m_currentDsPath, m_currentDbPath,
-			    AttrWriteType.from_int(writable));
+			    AttrWriteType.from_int(writable), logger);
 		    break;
 		case TangoConst.Tango_DEV_STRING:
 		    collector = new StringScalar(modeHandler, m_currentDsPath, m_currentDbPath,
-			    AttrWriteType.from_int(writable));
+			    AttrWriteType.from_int(writable), logger);
 		    break;
 		default:
 		    generateException(GlobalConst.DATA_TYPE_EXCEPTION, data_type, name);
@@ -289,15 +290,15 @@ public class TdbCollectorFactory {
 		case TangoConst.Tango_DEV_LONG64:
 		case TangoConst.Tango_DEV_UCHAR:
 		    collector = new NumberSpectrum(modeHandler, m_currentDsPath, m_currentDbPath,
-			    AttrWriteType.from_int(writable));
+			    AttrWriteType.from_int(writable), logger);
 		    break;
 		case TangoConst.Tango_DEV_BOOLEAN:
 		    collector = new BooleanSpectrum(modeHandler, m_currentDsPath, m_currentDbPath,
-			    AttrWriteType.from_int(writable));
+			    AttrWriteType.from_int(writable), logger);
 		    break;
 		case TangoConst.Tango_DEV_STRING:
 		    collector = new StringSpectrum(modeHandler, m_currentDsPath, m_currentDbPath,
-			    AttrWriteType.from_int(writable));
+			    AttrWriteType.from_int(writable), logger);
 		    break;
 		default:
 		    generateException(GlobalConst.DATA_TYPE_EXCEPTION, data_type, name);
@@ -305,7 +306,7 @@ public class TdbCollectorFactory {
 		break;
 	    case AttrDataFormat._IMAGE: // IMAGE
 		collector = new Image_RO(modeHandler, m_currentDsPath, m_currentDbPath,
-			AttrWriteType.from_int(writable));
+			AttrWriteType.from_int(writable), logger);
 		break;
 	    default:
 		generateException(GlobalConst.DATA_FORMAT_EXCEPTION, data_format, name);
@@ -350,9 +351,9 @@ public class TdbCollectorFactory {
 	final TdbCollector collector = tableCollector.get(superMode);
 
 	if (collector != null) {
-	    m_logger.trace(ILogger.LEVEL_INFO, "===> Collector found : removeSource is requested ... ");
+	    logger.debug("===> Collector found : removeSource is requested ... ");
 	    collector.removeSource(attributeLightMode.getAttribute_complete_name(), false);
-	    m_logger.trace(ILogger.LEVEL_INFO, "===> ... removeSource is done");
+	    logger.debug("===> ... removeSource is done");
 	    // if (collector.hasEmptyList()) {
 	    // toRemove.add(superMode);
 	    // }
diff --git a/src/main/java/TdbArchiver/Collector/Tools/FileTools.java b/src/main/java/TdbArchiver/Collector/Tools/FileTools.java
index 6aeb8718..127ba21c 100644
--- a/src/main/java/TdbArchiver/Collector/Tools/FileTools.java
+++ b/src/main/java/TdbArchiver/Collector/Tools/FileTools.java
@@ -212,12 +212,13 @@ import java.nio.channels.FileChannel;
 import java.sql.Timestamp;
 import java.util.Date;
 
+import org.slf4j.Logger;
+
 import TdbArchiver.Collector.DbProxy;
 import fr.esrf.Tango.AttrDataFormat;
 import fr.esrf.Tango.AttrWriteType;
 import fr.esrf.TangoDs.TangoConst;
 import fr.esrf.TangoDs.Util;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.DateHeure;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.StringFormater;
@@ -238,7 +239,7 @@ public class FileTools {
     private final String localFilePath;
     private final String remoteFilePath;
 
-    private final ILogger logger;
+    private final Logger logger;
     private final DbProxy dbProxy;
     private Timestamp lastTimestamp;
     private final String attributeName;
@@ -248,7 +249,7 @@ public class FileTools {
     private final long exportPeriod;
 
     public FileTools(final String attributeName, final String tableName, final int dataFormat, final int writable,
-	    final long windowsDuration, final ILogger logger, final DbProxy dbProxy, final String workingDsPath,
+	    final long windowsDuration, final Logger logger, final DbProxy dbProxy, final String workingDsPath,
 	    final String workingDbPath) throws IOException, ArchivingException {
 	this.dataFormat = dataFormat;
 	this.writable = writable;
@@ -261,7 +262,7 @@ public class FileTools {
 	localFilePath = workingDsPath;
 	remoteFilePath = workingDbPath;
 	writtenAttributes = 0;
-	logger.trace(ILogger.LEVEL_INFO, "new FileTools for " + attributeName + " at " + localFilePath);
+	logger.debug("new FileTools for " + attributeName + " at " + localFilePath);
 
 	checkDirs(localFilePath);
 	openFile();
@@ -294,16 +295,16 @@ public class FileTools {
     private synchronized void openFile() throws IOException, ArchivingException {
 	try {
 	    fileName = buidFileName(tableName);
-	    logger.trace(ILogger.LEVEL_INFO, "open file " + getLocalFilePath());
+	    logger.info("open file " + getLocalFilePath());
 	    final FileOutputStream stream = new FileOutputStream(new File(getLocalFilePath()));
 	    channel = stream.getChannel();
 	    if (dbProxy.getDataBase().getDbConn().getDbType() == ConfigConst.TDB_ORACLE) {
 		exportFileToDB(fileName);
 	    }
 	} catch (final IOException e) {
-	    logger.trace(ILogger.LEVEL_ERROR, "ERROR !! " + "\r\n" + "\t Origin : \t " + "FileTools.initFile" + "\r\n"
-		    + "\t Reason : \t " + e.getClass().getName() + "\r\n" + "\t Description : \t " + e.getMessage()
-		    + "\r\n" + "\t Additional information : \t " + "" + "\r\n");
+	    logger.error("ERROR !! " + "\r\n" + "\t Origin : \t " + "FileTools.initFile" + "\r\n" + "\t Reason : \t "
+		    + e.getClass().getName() + "\r\n" + "\t Description : \t " + e.getMessage() + "\r\n"
+		    + "\t Additional information : \t " + "" + "\r\n");
 	    e.printStackTrace();
 	    throw e;
 	}
@@ -314,9 +315,9 @@ public class FileTools {
      */
     public synchronized void closeFile() throws IOException, ArchivingException {
 	final String oldFileName = fileName;
-	logger.trace(ILogger.LEVEL_DEBUG, "closing file " + getLocalFilePath());
+	logger.info("closing file " + getLocalFilePath());
 	channel.close();
-	logger.trace(ILogger.LEVEL_DEBUG, "file closed " + getLocalFilePath());
+	logger.info("file closed " + getLocalFilePath());
 	if (dbProxy.getDataBase().getDbConn().getDbType() == ConfigConst.TDB_MYSQL) {
 	    exportFileToDB(oldFileName);
 	}
@@ -400,17 +401,16 @@ public class FileTools {
 		}
 
 	    } else {
-		logger.trace(ILogger.LEVEL_INFO,
-			"This timestamps has already been inserted : " + new Timestamp(timeStampValue)
-				+ " in the file " + fileName + "for " + scalarEvent.getAttribute_complete_name());
+		logger.debug("This timestamps has already been inserted : " + new Timestamp(timeStampValue)
+			+ " in the file " + fileName + "for " + scalarEvent.getAttribute_complete_name());
 	    }
 
 	} catch (final IOException e) {
 	    e.printStackTrace();
-	    logger.trace(ILogger.LEVEL_ERROR, "IOException for " + scalarEvent.getAttribute_complete_name());
+	    logger.error("IOException for " + scalarEvent.getAttribute_complete_name());
 	} catch (Exception e) {
 	    e.printStackTrace();
-	    logger.trace(ILogger.LEVEL_ERROR, "Unknow Exception for " + scalarEvent.getAttribute_complete_name());
+	    logger.error("Unknow Exception for " + scalarEvent.getAttribute_complete_name());
 	}
     }
 
@@ -421,15 +421,14 @@ public class FileTools {
 	final long elapseTime = currentDate - creationFileDate.getTime();
 	// attributePerFile is not defined so just check exportPeriod
 	if (attributePerFile <= 0 && elapseTime >= exportPeriod) {
-	    logger.trace(ILogger.LEVEL_DEBUG, "export because of elapseTime " + elapseTime);
+	    logger.debug("export because of elapseTime " + elapseTime);
 	    switchFile();
 	    // check attributePerFile and
 	    // exportPeriod
 	} else if (attributePerFile > 0) {
 	    writtenAttributes++;
 	    if (writtenAttributes >= attributePerFile || elapseTime >= exportPeriod) {
-		logger.trace(ILogger.LEVEL_DEBUG, "export due to writtenAttributes " + writtenAttributes
-			+ " - elapseTime " + elapseTime);
+		logger.debug("export due to writtenAttributes " + writtenAttributes + " - elapseTime " + elapseTime);
 		switchFile();
 		writtenAttributes = 0;
 	    }
@@ -443,8 +442,7 @@ public class FileTools {
 	} catch (final IOException e) {
 	    e.printStackTrace();
 	    final String msg = "FileToolsWithNio/write/problem writing for attribute/" + tableName;
-	    logger.trace(ILogger.LEVEL_ERROR, msg);
-	    logger.trace(ILogger.LEVEL_ERROR, e);
+	    logger.error(msg, e);
 	    throw e;
 	}
     }
@@ -495,8 +493,8 @@ public class FileTools {
 		}
 
 	    } else {
-		logger.trace(ILogger.LEVEL_INFO, "This timestamps has already been inserted : "
-			+ new Timestamp(timeStampValue) + " in the file " + fileName);
+		logger.info("This timestamps has already been inserted : " + new Timestamp(timeStampValue)
+			+ " in the file " + fileName);
 	    }
 	} catch (final IOException e) {
 	    Util.out2.println("ERROR !! " + "\r\n" + "\t Origin : \t " + "FileTools.processEventSpectrum" + "\r\n"
@@ -584,11 +582,11 @@ public class FileTools {
 		}
 		doExport();
 	    } else {
-		logger.trace(ILogger.LEVEL_INFO, "This timestamps has already been inserted : "
-			+ new Timestamp(timeStampValue) + " in the file " + fileName);
+		logger.info("This timestamps has already been inserted : " + new Timestamp(timeStampValue)
+			+ " in the file " + fileName);
 	    }
 	} catch (final IOException e) {
-	    Util.out2.println("ERROR !! " + "\r\n" + "\t Origin : \t " + "FileTools.processEventSpectrum" + "\r\n"
+	    logger.error("ERROR !! " + "\r\n" + "\t Origin : \t " + "FileTools.processEventSpectrum" + "\r\n"
 		    + "\t Reason : \t " + e.getClass().getName() + "\r\n" + "\t Description : \t " + e.getMessage()
 		    + "\r\n" + "\t Additional information : \t " + "File :\t " + fileName + "\r\n");
 	}
@@ -629,14 +627,14 @@ public class FileTools {
 			    .append("\"").toString());
 		    write(ConfigConst.NEW_LINE);
 		} else {
-		    logger.trace(ILogger.LEVEL_INFO, "This timestamps has already been inserted : "
-			    + new Timestamp(timeStampValue) + " in the file " + fileName);
+		    logger.info("This timestamps has already been inserted : " + new Timestamp(timeStampValue)
+			    + " in the file " + fileName);
 		}
 
 	    }
 
 	} catch (final IOException e) {
-	    Util.out2.println("ERROR !! " + "\r\n" + "\t Origin : \t " + "FileTools.processEventImage" + "\r\n"
+	    logger.error("ERROR !! " + "\r\n" + "\t Origin : \t " + "FileTools.processEventImage" + "\r\n"
 		    + "\t Reason : \t " + e.getClass().getName() + "\r\n" + "\t Description : \t " + e.getMessage()
 		    + "\r\n" + "\t Additional information : \t " + "File :\t " + fileName + "\r\n");
 	}
@@ -653,8 +651,8 @@ public class FileTools {
      * @throws ArchivingException
      */
     public synchronized String switchFile() throws IOException, ArchivingException {
-	logger.trace(ILogger.LEVEL_INFO, "#######Exporting file " + fileName + " - attribute " + attributeName
-		+ "-  period " + exportPeriod + " - attrPerFile " + attributePerFile);
+	logger.info("#######Exporting file " + fileName + " - attribute " + attributeName + "-  period " + exportPeriod
+		+ " - attrPerFile " + attributePerFile);
 
 	closeFile();
 	openFile();
@@ -667,8 +665,8 @@ public class FileTools {
 
     private void exportFileToDB(final String fileName) {
 	try {
-	    logger.trace(ILogger.LEVEL_DEBUG, "start exporting " + remoteFilePath + "/" + fileName + " - _tableName:"
-		    + tableName + " - attribute " + attributeName);
+	    logger.debug("start exporting " + remoteFilePath + "/" + fileName + " - _tableName:" + tableName
+		    + " - attribute " + attributeName);
 	    switch (dataFormat) {
 	    case AttrDataFormat._SCALAR:
 		dbProxy.exportToDB_Scalar(remoteFilePath, fileName, tableName, writable);
@@ -686,13 +684,12 @@ public class FileTools {
 
 	    final String message = "Export out OK -  of " + remoteFilePath + "/" + fileName + " - _tableName:"
 		    + tableName + " - attribute " + attributeName;
-	    logger.trace(ILogger.LEVEL_DEBUG, message);
+	    logger.debug(message);
 	} catch (final ArchivingException e) {
 	    e.printStackTrace();
 	    final String message = "Problem (ArchivingException) exporting file: _remoteFilePath|" + remoteFilePath
 		    + "|_exportFileName|" + fileName + "|_tableName|" + tableName;
-	    logger.trace(ILogger.LEVEL_ERROR, message);
-	    logger.trace(ILogger.LEVEL_ERROR, e);
+	    logger.error(message, e);
 	}
     }
 
diff --git a/src/main/java/TdbArchiver/Collector/image/Image_RO.java b/src/main/java/TdbArchiver/Collector/image/Image_RO.java
index dedbd6c8..1da6b3e6 100644
--- a/src/main/java/TdbArchiver/Collector/image/Image_RO.java
+++ b/src/main/java/TdbArchiver/Collector/image/Image_RO.java
@@ -102,6 +102,8 @@
 
 package TdbArchiver.Collector.image;
 
+import org.slf4j.Logger;
+
 import TdbArchiver.Collector.TdbCollector;
 import TdbArchiver.Collector.TdbModeHandler;
 import fr.esrf.Tango.AttrWriteType;
@@ -119,8 +121,8 @@ import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ImageEvent_RO;
 public class Image_RO extends TdbCollector implements IImageListener {
 
     public Image_RO(final TdbModeHandler modeHandler, final String currentDsPath, final String currentDbPath,
-	    final AttrWriteType writableType) {
-	super(modeHandler, currentDsPath, currentDbPath, writableType);
+	    final AttrWriteType writableType, Logger logger) {
+	super(modeHandler, currentDsPath, currentDbPath, writableType, logger);
     }
 
     @Override
diff --git a/src/main/java/TdbArchiver/Collector/scalar/BooleanScalar.java b/src/main/java/TdbArchiver/Collector/scalar/BooleanScalar.java
index fc736b7e..04ec8390 100644
--- a/src/main/java/TdbArchiver/Collector/scalar/BooleanScalar.java
+++ b/src/main/java/TdbArchiver/Collector/scalar/BooleanScalar.java
@@ -92,6 +92,8 @@
 
 package TdbArchiver.Collector.scalar;
 
+import org.slf4j.Logger;
+
 import Common.Archiver.Collector.ModesCounters;
 import TdbArchiver.Collector.TdbCollector;
 import TdbArchiver.Collector.TdbModeHandler;
@@ -107,7 +109,6 @@ import fr.esrf.tangoatk.core.ErrorEvent;
 import fr.esrf.tangoatk.core.IBooleanScalar;
 import fr.esrf.tangoatk.core.IBooleanScalarListener;
 import fr.esrf.tangoatk.core.IEntity;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
@@ -116,8 +117,8 @@ import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 public class BooleanScalar extends TdbCollector implements IBooleanScalarListener {
 
     public BooleanScalar(final TdbModeHandler modeHandler, final String currentDsPath, final String currentDbPath,
-	    final AttrWriteType writableType) {
-	super(modeHandler, currentDsPath, currentDbPath, writableType);
+	    final AttrWriteType writableType, Logger logger) {
+	super(modeHandler, currentDsPath, currentDbPath, writableType, logger);
     }
 
     @Override
@@ -165,7 +166,7 @@ public class BooleanScalar extends TdbCollector implements IBooleanScalarListene
 	} else {
 	    final String message = "event is null or empty: " + event;
 	    System.err.println(message);
-	    logger.trace(ILogger.LEVEL_ERROR, message);
+	    logger.error(message);
 	}
     }
 
@@ -180,11 +181,11 @@ public class BooleanScalar extends TdbCollector implements IBooleanScalarListene
 	    if (isFirstValueList.get(attributeName.toLowerCase())) {
 		doArchive = true;
 		isFirstValueList.put(attributeName.toLowerCase(), false);
-		logger.trace(ILogger.LEVEL_DEBUG, attributeName + " first value, forcing archiving");
+		logger.debug(attributeName + " first value, forcing archiving");
 	    } else {
 		final ModesCounters mc = getModeCounter(attributeName);
 		if (mc == null) {
-		    logger.trace(ILogger.LEVEL_ERROR, attributeName + "Attribute Counters unknown");
+		    logger.error(attributeName + "Attribute Counters unknown");
 		} else {
 		    doArchive = doArchiveEvent(mc, scalarEvent.getData_type(), scalarEvent.getReadValue(),
 			    getLastValue(scalarEvent), attributeName);
@@ -222,16 +223,15 @@ public class BooleanScalar extends TdbCollector implements IBooleanScalarListene
 
 	final String errorMess = this.getClass().getSimpleName() + ".errorChange : Unable to read the attribute named "
 		+ errorEvent.getSource().toString();
-	Util.out3.println(errorMess);
-	logger.trace(ILogger.LEVEL_ERROR, errorMess);
+	logger.error(errorMess);
 
 	try {
 	    processEventScalar(
 		    getNullValueScalarEvent(errorEvent, TangoConst.Tango_DEV_BOOLEAN, getWritableValue().value()),
 		    tryNumber);
 	} catch (final Exception e) {
-	    super.logger.trace(ILogger.LEVEL_ERROR, this.getClass().getSimpleName()
-		    + ".errorChange : during processEventScalar creation execp : " + e);
+	    logger.error(this.getClass().getSimpleName() + ".errorChange : during processEventScalar creation execp : "
+		    + e);
 	    e.printStackTrace();
 	}
     }
diff --git a/src/main/java/TdbArchiver/Collector/scalar/NumberScalar.java b/src/main/java/TdbArchiver/Collector/scalar/NumberScalar.java
index b1993a87..bdbe3c77 100644
--- a/src/main/java/TdbArchiver/Collector/scalar/NumberScalar.java
+++ b/src/main/java/TdbArchiver/Collector/scalar/NumberScalar.java
@@ -151,6 +151,8 @@
 //-======================================================================
 package TdbArchiver.Collector.scalar;
 
+import org.slf4j.Logger;
+
 import Common.Archiver.Collector.ModesCounters;
 import TdbArchiver.Collector.TdbCollector;
 import TdbArchiver.Collector.TdbModeHandler;
@@ -167,7 +169,6 @@ import fr.esrf.tangoatk.core.INumberScalar;
 import fr.esrf.tangoatk.core.INumberScalarListener;
 import fr.esrf.tangoatk.core.NumberScalarEvent;
 import fr.esrf.tangoatk.core.attribute.AAttribute;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
@@ -176,8 +177,8 @@ import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 public class NumberScalar extends TdbCollector implements INumberScalarListener {
 
     public NumberScalar(final TdbModeHandler _modeHandler, final String currentDsPath, final String currentDbPath,
-	    final AttrWriteType writableType) {
-	super(_modeHandler, currentDsPath, currentDbPath, writableType);
+	    final AttrWriteType writableType, Logger logger) {
+	super(_modeHandler, currentDsPath, currentDbPath, writableType, logger);
     }
 
     @Override
@@ -209,11 +210,11 @@ public class NumberScalar extends TdbCollector implements INumberScalarListener
 	    if (isFirstValueList.get(attributeName.toLowerCase())) {
 		doArchive = true;
 		isFirstValueList.put(attributeName.toLowerCase(), false);
-		logger.trace(ILogger.LEVEL_DEBUG, attributeName + " first value, forcing archiving");
+		logger.debug(attributeName + " first value, forcing archiving");
 	    } else {
 		final ModesCounters mc = getModeCounter(attributeName);
 		if (mc == null) {
-		    logger.trace(ILogger.LEVEL_ERROR, attributeName + " Attribute Counters unknown");
+		    logger.error(attributeName + " Attribute Counters unknown");
 		} else {
 		    doArchive = doArchiveEvent(mc, scalarEvent.getData_type(), scalarEvent.getReadValue(),
 			    getLastValue(scalarEvent), attributeName);
@@ -354,7 +355,7 @@ public class NumberScalar extends TdbCollector implements INumberScalarListener
 	} else {
 	    final String message = "event is null or empty: " + event;
 	    System.err.println(message);
-	    logger.trace(ILogger.LEVEL_ERROR, message);
+	    logger.error(message);
 	}
     }
 
@@ -365,15 +366,15 @@ public class NumberScalar extends TdbCollector implements INumberScalarListener
 	final String errorMess = this.getClass().getSimpleName() + ".errorChange : Unable to read the attribute named "
 		+ errorEvent.getSource().toString();
 	Util.out3.println(errorMess);
-	super.logger.trace(ILogger.LEVEL_ERROR, errorMess);
+	logger.error(errorMess);
 
 	try {
 	    processEventScalar(
 		    getNullValueScalarEvent(errorEvent, ((AAttribute) errorEvent.getSource()).getTangoDataType(),
 			    getWritableValue().value()), tryNumber);
 	} catch (final Exception e) {
-	    super.logger.trace(ILogger.LEVEL_ERROR, this.getClass().getSimpleName()
-		    + ".errorChange : during processEventScalar creation execp : " + e);
+	    logger.error(this.getClass().getSimpleName() + ".errorChange : during processEventScalar creation execp : "
+		    + e);
 	    e.printStackTrace();
 	}
     }
diff --git a/src/main/java/TdbArchiver/Collector/scalar/StateScalar.java b/src/main/java/TdbArchiver/Collector/scalar/StateScalar.java
index faf55bee..f57165b2 100644
--- a/src/main/java/TdbArchiver/Collector/scalar/StateScalar.java
+++ b/src/main/java/TdbArchiver/Collector/scalar/StateScalar.java
@@ -18,6 +18,8 @@
  */
 package TdbArchiver.Collector.scalar;
 
+import org.slf4j.Logger;
+
 import Common.Archiver.Collector.ModesCounters;
 import TdbArchiver.Collector.TdbCollector;
 import TdbArchiver.Collector.TdbModeHandler;
@@ -34,7 +36,6 @@ import fr.esrf.tangoatk.core.ErrorEvent;
 import fr.esrf.tangoatk.core.IDevStateScalar;
 import fr.esrf.tangoatk.core.IDevStateScalarListener;
 import fr.esrf.tangoatk.core.IEntity;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
@@ -43,8 +44,8 @@ import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 public class StateScalar extends TdbCollector implements IDevStateScalarListener {
 
     public StateScalar(final TdbModeHandler _modeHandler, final String currentDsPath, final String currentDbPath,
-	    final AttrWriteType writableType) {
-	super(_modeHandler, currentDsPath, currentDbPath, writableType);
+	    final AttrWriteType writableType, Logger logger) {
+	super(_modeHandler, currentDsPath, currentDbPath, writableType, logger);
     }
 
     public void processEventScalar(final ScalarEvent scalarEvent, int try_number) {
@@ -58,11 +59,11 @@ public class StateScalar extends TdbCollector implements IDevStateScalarListener
 	    if (isFirstValueList.get(attributeName.toLowerCase())) {
 		doArchive = true;
 		isFirstValueList.put(attributeName.toLowerCase(), false);
-		logger.trace(ILogger.LEVEL_DEBUG, attributeName + " first value, forcing archiving");
+		logger.debug(attributeName + " first value, forcing archiving");
 	    } else {
 		final ModesCounters mc = getModeCounter(attributeName);
 		if (mc == null) {
-		    logger.trace(ILogger.LEVEL_ERROR, attributeName + " Attribute Counters unknown");
+		    logger.error(attributeName + " Attribute Counters unknown");
 		} else {
 		    doArchive = doArchiveEvent(mc, scalarEvent.getData_type(), scalarEvent.getReadValue(),
 			    getLastValue(scalarEvent), attributeName);
@@ -136,7 +137,7 @@ public class StateScalar extends TdbCollector implements IDevStateScalarListener
 	} else {
 	    final String message = "event is null or empty: " + event;
 	    System.err.println(message);
-	    logger.trace(ILogger.LEVEL_ERROR, message);
+	    logger.error(message);
 	}
     }
 
@@ -145,16 +146,15 @@ public class StateScalar extends TdbCollector implements IDevStateScalarListener
 
 	final String errorMess = this.getClass().getSimpleName() + ".errorChange : Unable to read the attribute named "
 		+ errorEvent.getSource().toString();
-	Util.out3.println(errorMess);
-	super.logger.trace(ILogger.LEVEL_ERROR, errorMess);
+	logger.error(errorMess);
 
 	try {
 	    processEventScalar(
 		    getNullValueScalarEvent(errorEvent, TangoConst.Tango_DEV_STATE, getWritableValue().value()),
 		    DEFAULT_TRY_NUMBER);
 	} catch (final Exception e) {
-	    super.logger.trace(ILogger.LEVEL_ERROR, this.getClass().getSimpleName()
-		    + ".errorChange : during processEventScalar creation execp : " + e);
+	    logger.error(this.getClass().getSimpleName() + ".errorChange : during processEventScalar creation execp : "
+		    + e);
 	    e.printStackTrace();
 	}
     }
diff --git a/src/main/java/TdbArchiver/Collector/scalar/StringScalar.java b/src/main/java/TdbArchiver/Collector/scalar/StringScalar.java
index d320b71c..24b25aa3 100644
--- a/src/main/java/TdbArchiver/Collector/scalar/StringScalar.java
+++ b/src/main/java/TdbArchiver/Collector/scalar/StringScalar.java
@@ -18,6 +18,8 @@
  */
 package TdbArchiver.Collector.scalar;
 
+import org.slf4j.Logger;
+
 import Common.Archiver.Collector.ModesCounters;
 import TdbArchiver.Collector.TdbCollector;
 import TdbArchiver.Collector.TdbModeHandler;
@@ -33,7 +35,6 @@ import fr.esrf.tangoatk.core.IEntity;
 import fr.esrf.tangoatk.core.IStringScalar;
 import fr.esrf.tangoatk.core.IStringScalarListener;
 import fr.esrf.tangoatk.core.StringScalarEvent;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ArchivingException;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
@@ -41,8 +42,8 @@ import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.ScalarEvent;
 public class StringScalar extends TdbCollector implements IStringScalarListener {
 
     public StringScalar(final TdbModeHandler _modeHandler, final String currentDsPath, final String currentDbPath,
-	    final AttrWriteType writableType) {
-	super(_modeHandler, currentDsPath, currentDbPath, writableType);
+	    final AttrWriteType writableType, Logger logger) {
+	super(_modeHandler, currentDsPath, currentDbPath, writableType, logger);
     }
 
     @Override
@@ -76,12 +77,12 @@ public class StringScalar extends TdbCollector implements IStringScalarListener
 	    if (isFirstValueList.get(attributeName.toLowerCase())) {
 		doArchive = true;
 		isFirstValueList.put(attributeName.toLowerCase(), false);
-		logger.trace(ILogger.LEVEL_DEBUG, attributeName + " first value, forcing archiving");
+		logger.debug(attributeName + " first value, forcing archiving");
 	    } else {
 
 		final ModesCounters mc = getModeCounter(attributeName);
 		if (mc == null) {
-		    logger.trace(ILogger.LEVEL_ERROR, attributeName + " Attribute Counters unknown");
+		    logger.error(attributeName + " Attribute Counters unknown");
 		} else {
 		    doArchive = doArchiveEvent(mc, scalarEvent.getData_type(), scalarEvent.getReadValue(),
 			    getLastValue(scalarEvent), attributeName);
@@ -147,7 +148,7 @@ public class StringScalar extends TdbCollector implements IStringScalarListener
 	} else {
 	    final String message = "event is null or empty: " + event;
 	    System.err.println(message);
-	    logger.trace(ILogger.LEVEL_ERROR, message);
+	    logger.error(message);
 	}
 
     }
@@ -159,15 +160,15 @@ public class StringScalar extends TdbCollector implements IStringScalarListener
 	final String errorMess = this.getClass().getSimpleName() + ".errorChange : Unable to read the attribute named "
 		+ errorEvent.getSource().toString();
 	Util.out3.println(errorMess);
-	super.logger.trace(ILogger.LEVEL_ERROR, errorMess);
+	logger.error(errorMess);
 
 	try {
 	    processEventScalar(
 		    getNullValueScalarEvent(errorEvent, TangoConst.Tango_DEV_STRING, getWritableValue().value()),
 		    tryNumber);
 	} catch (final Exception e) {
-	    super.logger.trace(ILogger.LEVEL_ERROR, this.getClass().getSimpleName()
-		    + ".errorChange : during processEventScalar creation execp : " + e);
+	    logger.error(this.getClass().getSimpleName() + ".errorChange : during processEventScalar creation execp : "
+		    + e);
 	    e.printStackTrace();
 	}
     }
diff --git a/src/main/java/TdbArchiver/Collector/spectrum/BooleanSpectrum.java b/src/main/java/TdbArchiver/Collector/spectrum/BooleanSpectrum.java
index a4a36e45..7cdd5cce 100644
--- a/src/main/java/TdbArchiver/Collector/spectrum/BooleanSpectrum.java
+++ b/src/main/java/TdbArchiver/Collector/spectrum/BooleanSpectrum.java
@@ -1,5 +1,7 @@
 package TdbArchiver.Collector.spectrum;
 
+import org.slf4j.Logger;
+
 import TdbArchiver.Collector.TdbCollector;
 import TdbArchiver.Collector.TdbModeHandler;
 import fr.esrf.Tango.AttrWriteType;
@@ -20,8 +22,8 @@ import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.SpectrumEvent_RW;
 public class BooleanSpectrum extends TdbCollector implements IBooleanSpectrumListener {
 
     public BooleanSpectrum(final TdbModeHandler modeHandler, final String currentDsPath, final String currentDbPath,
-	    final AttrWriteType writableType) {
-	super(modeHandler, currentDsPath, currentDbPath, writableType);
+	    final AttrWriteType writableType, Logger logger) {
+	super(modeHandler, currentDsPath, currentDbPath, writableType, logger);
     }
 
     @Override
diff --git a/src/main/java/TdbArchiver/Collector/spectrum/NumberSpectrum.java b/src/main/java/TdbArchiver/Collector/spectrum/NumberSpectrum.java
index b894e501..90f72c2f 100644
--- a/src/main/java/TdbArchiver/Collector/spectrum/NumberSpectrum.java
+++ b/src/main/java/TdbArchiver/Collector/spectrum/NumberSpectrum.java
@@ -113,6 +113,8 @@
 
 package TdbArchiver.Collector.spectrum;
 
+import org.slf4j.Logger;
+
 import TdbArchiver.Collector.TdbCollector;
 import TdbArchiver.Collector.TdbModeHandler;
 import fr.esrf.Tango.AttrWriteType;
@@ -133,8 +135,8 @@ import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.SpectrumEvent_RW;
 public class NumberSpectrum extends TdbCollector implements ISpectrumListener {
 
     public NumberSpectrum(final TdbModeHandler modeHandler, final String currentDsPath, final String currentDbPath,
-	    final AttrWriteType writableType) {
-	super(modeHandler, currentDsPath, currentDbPath, writableType);
+	    final AttrWriteType writableType, Logger logger) {
+	super(modeHandler, currentDsPath, currentDbPath, writableType, logger);
     }
 
     @Override
diff --git a/src/main/java/TdbArchiver/Collector/spectrum/StringSpectrum.java b/src/main/java/TdbArchiver/Collector/spectrum/StringSpectrum.java
index f0a01060..dc9382e3 100644
--- a/src/main/java/TdbArchiver/Collector/spectrum/StringSpectrum.java
+++ b/src/main/java/TdbArchiver/Collector/spectrum/StringSpectrum.java
@@ -118,6 +118,7 @@
 package TdbArchiver.Collector.spectrum;
 
 import org.apache.commons.lang.ArrayUtils;
+import org.slf4j.Logger;
 
 import TdbArchiver.Collector.TdbCollector;
 import TdbArchiver.Collector.TdbModeHandler;
@@ -139,8 +140,8 @@ import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Tools.SpectrumEvent_RW;
 public class StringSpectrum extends TdbCollector implements IStringSpectrumListener {
 
     public StringSpectrum(final TdbModeHandler modeHandler, final String currentDsPath, final String currentDbPath,
-	    final AttrWriteType writableType) {
-	super(modeHandler, currentDsPath, currentDbPath, writableType);
+	    final AttrWriteType writableType, Logger logger) {
+	super(modeHandler, currentDsPath, currentDbPath, writableType, logger);
     }
 
     @Override
diff --git a/src/main/java/TdbArchiver/TdbArchiver.java b/src/main/java/TdbArchiver/TdbArchiver.java
index 5f92abd3..8da1bf12 100644
--- a/src/main/java/TdbArchiver/TdbArchiver.java
+++ b/src/main/java/TdbArchiver/TdbArchiver.java
@@ -396,6 +396,7 @@ import java.util.concurrent.Executors;
 
 import org.omg.CORBA.SystemException;
 import org.omg.CORBA.UserException;
+import org.slf4j.Logger;
 import org.tango.utils.DevFailedUtils;
 
 import TdbArchiver.Collector.DbProxy;
@@ -410,9 +411,8 @@ import fr.esrf.TangoDs.DeviceImpl;
 import fr.esrf.TangoDs.Except;
 import fr.esrf.TangoDs.TangoConst;
 import fr.esrf.TangoDs.Util;
+import fr.soleil.archiving.utils.LoggingUtils;
 import fr.soleil.archiving.utils.TangoStateUtils;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.LoggerFactory;
 import fr.soleil.commonarchivingapi.ArchivingTools.Tools.GlobalConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingApi.ConfigConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingApi.GetConf;
@@ -569,10 +569,10 @@ public class TdbArchiver extends DeviceImpl implements TangoConst {
     public static final short SUCCEEDED = 20;
     public static final short FAILED = 30;
 
-    private fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger logger;
     private final Set<String> koAttributes = new HashSet<String>();
     private final Set<String> okAttributes = new HashSet<String>();
     private String dbSchema;
+    private Logger logger;
 
     // --------------------------------------
 
@@ -625,6 +625,12 @@ public class TdbArchiver extends DeviceImpl implements TangoConst {
 	get_logger().info("TdbArchiver() create " + device_name);
 	get_device_property();
 
+	try {
+	    logger = LoggingUtils.configureLogging(device_name, hasDiary, diaryPath, diaryLogLevel);
+	} catch (IOException e) {
+	    TangoStateUtils.setFault(this, "logging configuration failed");
+	}
+
 	attr_image_charge_read = 0;
 	attr_spectrum_charge_read = 0;
 	attr_scalar_charge_read = 0;
@@ -645,17 +651,16 @@ public class TdbArchiver extends DeviceImpl implements TangoConst {
 	get_logger().info("isDedicated = " + isDedicated);
 	get_logger().info("reservedAttributes = " + traceStrings(reservedAttributes));
 
-	startLoggingFactory();
 	collectorFactory = new TdbCollectorFactory(logger, dsPath, dbPath);
 
-	dbProxy = new DbProxy(logger, dbHost, dbName, dbSchema, dbUser, dbPassword, RacConnection);
-
-	if (!dbProxy.is_db_connected()) {
-	    TangoStateUtils.setFault(this, "database connection error");
-	    get_logger().error("ERROR : Database unconnected !!");
-	} else {
+	try {
+	    dbProxy = new DbProxy(dbHost, dbName, dbSchema, dbUser, dbPassword, RacConnection);
 	    Executors.newSingleThreadExecutor().submit(new InitDeviceTask());
+	} catch (ArchivingException e) {
+	    TangoStateUtils.setFault(this, "Historical database connection failed: " + e);
+	    logger.error("ERROR : Database unconnected !!");
 	}
+
     }
 
     private String traceStrings(final String[] reservedAttributes2) {
@@ -673,12 +678,6 @@ public class TdbArchiver extends DeviceImpl implements TangoConst {
 	return ret;
     }
 
-    private void startLoggingFactory() {
-	final ILogger _logger = LoggerFactory.getImpl(device_name, diaryPath, hasDiary);
-	_logger.setTraceLevel(diaryLogLevel);
-	logger = _logger;
-    }
-
     private void startArchiving(final ArchivingMessConfig archivingMessConfig, final boolean forceThreadedMode,
 	    final boolean updateAMTTable) throws DevFailed {
 	final StartArchivingRunnable startArchivingRunnable = new StartArchivingRunnable(archivingMessConfig,
@@ -700,7 +699,7 @@ public class TdbArchiver extends DeviceImpl implements TangoConst {
 	    try {
 		myCurrentTasks = dbProxy.getArchiverCurrentTasks(device_name);
 	    } catch (ArchivingException e) {
-		logger.trace(ILogger.LEVEL_ERROR, "cannot getArchiverCurrentTasks " + e);
+		logger.error("cannot getArchiverCurrentTasks " + e);
 		TangoStateUtils.setFault(TdbArchiver.this, e.getMessage());
 	    }
 	    try {
@@ -757,7 +756,7 @@ public class TdbArchiver extends DeviceImpl implements TangoConst {
 	 * cleanOldFiles = false; hasTriggeredExport = false;
 	 */
 	hasDiary = false;
-	diaryLogLevel = ILogger.DEBUG;
+	diaryLogLevel = "DEBUG";
 	diaryPath = null;
 	isDedicated = false;
 	reservedAttributes = null;
@@ -1018,11 +1017,11 @@ public class TdbArchiver extends DeviceImpl implements TangoConst {
 
     private void triggerArchiving(final String[] argin, final boolean updateAMTTable) throws DevFailed {
 	TangoStateUtils.setRunning(this);
-	logger.trace(ILogger.LEVEL_INFO, "trigger_archive_conf - in");
+	logger.debug("trigger_archive_conf - in");
 
 	final ArchivingException archivingException = new ArchivingException();
 	final ArchivingMessConfig archivingMessConfig = ArchivingMessConfig.creationWithFullInformation(argin);
-	archivingMessConfig.filter(isDedicated, reservedAttributes, logger);
+	archivingMessConfig.filter(isDedicated, reservedAttributes);
 
 	boolean hasToThrow = false;
 
@@ -1034,7 +1033,7 @@ public class TdbArchiver extends DeviceImpl implements TangoConst {
 	    attributeLightMode.setTrigger_time(new Timestamp(System.currentTimeMillis()));
 	    boolean att_support = false;
 	    final String attCompleteName = attributeLightMode.getAttribute_complete_name();
-	    logger.trace(ILogger.LEVEL_INFO, "managing " + attCompleteName);
+	    logger.info("managing {}", attCompleteName);
 	    try {
 		att_support = AttributeSupport.checkAttributeSupport(attCompleteName,
 			attributeLightMode.getData_type(), attributeLightMode.getData_format(),
@@ -1052,10 +1051,10 @@ public class TdbArchiver extends DeviceImpl implements TangoConst {
 		    // start a new data collection
 		    final TdbCollector m_collector = collectorFactory.get(attributeLightMode);
 		    if (m_collector == null) {
-			logger.trace(ILogger.LEVEL_INFO, "Entering addSource " + attCompleteName);
+			logger.debug("Entering addSource " + attCompleteName);
 			collectorFactory.createCollectorAndAddSource(attributeLightMode, dbProxy, attributePerFile);
 		    } else {
-			logger.trace(ILogger.LEVEL_INFO, "addSource " + attCompleteName);
+			logger.debug("addSource " + attCompleteName);
 			m_collector.addSource(attributeLightMode, attributePerFile);
 		    }
 
@@ -1070,7 +1069,7 @@ public class TdbArchiver extends DeviceImpl implements TangoConst {
 		}
 		okAttributes.add(attCompleteName.toLowerCase());
 		koAttributes.remove(attCompleteName.toLowerCase());
-		logger.trace(ILogger.LEVEL_INFO, "OK: " + attCompleteName);
+		logger.info("OK: " + attCompleteName);
 	    } catch (final ArchivingException e) {
 		try {
 		    collectorFactory.remove(attCompleteName);
@@ -1080,10 +1079,10 @@ public class TdbArchiver extends DeviceImpl implements TangoConst {
 		final String message = GlobalConst.ARCHIVING_ERROR_PREFIX + " : ";
 		archivingException.addStack(message, e);
 		hasToThrow = true;
-		logger.trace(ILogger.LEVEL_ERROR, e);
+		logger.error("start failed ", e);
 		koAttributes.add(attCompleteName.toLowerCase());
 		okAttributes.remove(attCompleteName.toLowerCase());
-		logger.trace(ILogger.LEVEL_INFO, "KO: " + attCompleteName);
+		logger.error("KO: " + attCompleteName);
 	    } catch (Exception e) {
 		try {
 		    collectorFactory.remove(attCompleteName);
@@ -1092,18 +1091,18 @@ public class TdbArchiver extends DeviceImpl implements TangoConst {
 		e.printStackTrace();
 		koAttributes.add(attCompleteName.toLowerCase());
 		okAttributes.remove(attCompleteName.toLowerCase());
-		logger.trace(ILogger.LEVEL_ERROR, "KO " + attCompleteName + " unexpected " + e);
+		logger.error("KO " + attCompleteName + " unexpected " + e);
 	    }
 	}
 
 	computeLoads();
 
 	if (hasToThrow) {
-	    logger.trace(ILogger.LEVEL_INFO, "trigger_archive_conf ERROR - out");
+	    logger.error("trigger_archive_conf ERROR - out");
 	    throw archivingException.toTangoException();
 	}
 
-	logger.trace(ILogger.LEVEL_INFO, "trigger_archive_conf - out");
+	logger.debug("trigger_archive_conf - out");
     }
 
     /**
@@ -1119,15 +1118,6 @@ public class TdbArchiver extends DeviceImpl implements TangoConst {
 	return GetConf.m_DEFAULT_EXPORT_PERIOD_VALUE;
     }
 
-    private void logWarningAboutRiskySettingOfStateBackToOn(final String methodName, final Exception e) {
-	final String openingLine = "Setting the state back to ON despite encountering exceptions in " + methodName
-		+ " VVVVVVVVVVV";
-	final String closingLine = "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^";
-	logger.trace(ILogger.LEVEL_WARNING, openingLine);
-	logger.trace(ILogger.LEVEL_WARNING, e);
-	logger.trace(ILogger.LEVEL_WARNING, closingLine);
-    }
-
     // =========================================================
     /**
      * Execute command "TriggerArchiveAtt" on device. This command is invoked
@@ -1206,12 +1196,12 @@ public class TdbArchiver extends DeviceImpl implements TangoConst {
     public void stop_archive_att(final String[] argin) throws DevFailed {
 	TangoStateUtils.isAllowed(this);
 	TangoStateUtils.setRunning(this);
-	logger.trace(ILogger.LEVEL_INFO, "stop_archive_att - in");
+	logger.debug("stop_archive_att - in");
 	try {
 	    String attributeName = argin[0];
 	    // final AttributeLightMode attributeLightMode =
 	    // AttributeLightMode.creationWithFullInformation(argin);
-	    logger.trace(ILogger.LEVEL_INFO, "attribute: " + attributeName);
+	    logger.info("stopping attribute: " + attributeName);
 	    if (koAttributes.contains(attributeName.toLowerCase())
 		    || okAttributes.contains(attributeName.toLowerCase())) {
 		// stop only if attribute is managed by this archiver
@@ -1226,13 +1216,13 @@ public class TdbArchiver extends DeviceImpl implements TangoConst {
 		DevFailedUtils.throwDevFailed(attributeName + " is not archived by this device");
 	    }
 	} catch (final ArchivingException e) {
-	    logger.trace(ILogger.LEVEL_ERROR, e);
+	    logger.error("stop error", e);
 	    e.printStackTrace();
 	    throw e.toTangoException();
 	} finally {
 	    computeLoads();
 	    TangoStateUtils.updateState(this, koAttributes, okAttributes);
-	    logger.trace(ILogger.LEVEL_INFO, "stop_archive_att - out");
+	    logger.debug("stop_archive_att - out");
 	}
 
 	get_logger().info("Exiting stop_archive_att()");
@@ -1268,7 +1258,7 @@ public class TdbArchiver extends DeviceImpl implements TangoConst {
 	    } else {
 		final String msg = "TdbArchiver/export_data2_db/getAttribute_complete_name|"
 			+ attributeLightMode.getAttribute_complete_name() + "| The collector is missing!";
-		logger.trace(ILogger.LEVEL_CRITIC, msg);
+		logger.error(msg);
 
 		final String message = "Attempt to get a missing collector!";
 		final String reason = "Missing collector for attribute: "
@@ -1471,8 +1461,8 @@ public class TdbArchiver extends DeviceImpl implements TangoConst {
     private void logRetry(final ArchivingMessConfig archivingMessConfig, final String methodName) {
 	final String retryContent = archivingMessConfig.toString();
 	final String openingLine = methodName + " - retry for the following attributes";
-	logger.trace(ILogger.LEVEL_INFO, openingLine);
-	logger.trace(ILogger.LEVEL_INFO, retryContent);
+	logger.debug(openingLine);
+	logger.debug(retryContent);
     }
 
     private void computeLoads() {
diff --git a/src/main/java/TdbArchivingWatcher/TdbArchivingWatcher.java b/src/main/java/TdbArchivingWatcher/TdbArchivingWatcher.java
index e1d892f0..3368a9ed 100644
--- a/src/main/java/TdbArchivingWatcher/TdbArchivingWatcher.java
+++ b/src/main/java/TdbArchivingWatcher/TdbArchivingWatcher.java
@@ -28,7 +28,6 @@ import fr.esrf.TangoDs.Attribute;
 import fr.esrf.TangoDs.DeviceClass;
 import fr.esrf.TangoDs.Except;
 import fr.esrf.TangoDs.Util;
-import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
 import fr.soleil.hdbtdbArchivingApi.ArchivingApi.ConfigConst;
 import fr.soleil.hdbtdbArchivingApi.ArchivingManagerApi.TdbArchivingManagerApiRef;
 import fr.soleil.hdbtdbArchivingApi.ArchivingTools.Mode.Mode;
@@ -711,9 +710,7 @@ public class TdbArchivingWatcher extends AbsArchivingWatcher {
 		}
 	    }
 	} catch (final Exception e) {
-	    logger.trace(ILogger.LEVEL_ERROR, "get_all_archiving_attributes/error! VVVVVVVVVVVVVVVVV");
-	    logger.trace(ILogger.LEVEL_ERROR, e);
-	    logger.trace(ILogger.LEVEL_ERROR, "get_all_archiving_attributes/error! ^^^^^^^^^^^^^^^^^");
+	    logger.error("get_all_archiving_attributes/error! VVVVVVVVVVVVVVVVV", e);
 	    Tools.throwDevFailed(e);
 	}
 
diff --git a/src/main/java/TdbExtractor/TdbExtractor.java b/src/main/java/TdbExtractor/TdbExtractor.java
index a0fa57a7..f092f14e 100644
--- a/src/main/java/TdbExtractor/TdbExtractor.java
+++ b/src/main/java/TdbExtractor/TdbExtractor.java
@@ -1534,7 +1534,11 @@ public class TdbExtractor extends DeviceImpl
 		String[] values = new String[tuples.length];
 		for (int i = 0; i < tuples.length; i++) {
 		    timeStamps[i] = tuples[i].time;
-		    values[i] = tuples[i].value[0].toString();
+		    if (tuples[i].value[0] == null) {
+			values[i] = "null";
+		    } else {
+			values[i] = tuples[i].value[0].toString();
+		    }
 		}
 		argout = new DevVarDoubleStringArray(timeStamps, values);
 	    } catch (final ArchivingException e) {
@@ -2477,11 +2481,19 @@ public class TdbExtractor extends DeviceImpl
 	// Create the attribute depends on DataFormat
 	int data_type;
 	data_type = dbData.getData_type();
-	// The STATE type attributes are translated in STRING TYPE because the
-	// State type is not well
-	// managed in Tango layers
 	if (data_type == TangoConst.Tango_DEV_STATE) {
+	    // The STATE type attributes are translated in STRING TYPE because
+	    // the State type is not well
+	    // managed in Tango layers
 	    data_type = TangoConst.Tango_DEV_STRING;
+	} else if (data_type == TangoConst.Tango_DEV_USHORT || data_type == TangoConst.Tango_DEV_UCHAR) {
+	    // U_* types are not supported by polling buffer, so use another
+	    // supported type
+	    data_type = TangoConst.Tango_DEV_SHORT;
+	} else if (data_type == TangoConst.Tango_DEV_ULONG) {
+	    data_type = TangoConst.Tango_DEV_LONG;
+	} else if (data_type == TangoConst.Tango_DEV_ULONG64) {
+	    data_type = TangoConst.Tango_DEV_LONG64;
 	}
 
 	switch (dbData.getData_format()) {
@@ -2555,6 +2567,8 @@ public class TdbExtractor extends DeviceImpl
 	    } else {
 		tg_1.fill_attr_polling_buffer(this, random_name_1, dbData.getDataAsTimedAttrData());
 	    }
+	} catch (DevFailed e) {
+	    throw e;
 	} catch (Exception e) {
 	    // FIXME java.lang.ArrayIndexOutOfBoundsException thrown when some
 	    // data are empty.
diff --git a/src/main/java/fr/soleil/archiving/utils/LoggingUtils.java b/src/main/java/fr/soleil/archiving/utils/LoggingUtils.java
new file mode 100644
index 00000000..a6e396f0
--- /dev/null
+++ b/src/main/java/fr/soleil/archiving/utils/LoggingUtils.java
@@ -0,0 +1,48 @@
+package fr.soleil.archiving.utils;
+
+import java.io.IOException;
+
+import org.apache.log4j.ConsoleAppender;
+import org.apache.log4j.DailyRollingFileAppender;
+import org.apache.log4j.Level;
+import org.apache.log4j.PatternLayout;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class LoggingUtils {
+
+    private LoggingUtils() {
+
+    }
+
+    public static Logger configureLogging(String deviceName, boolean isUsingFile, String filePath, String level)
+	    throws IOException {
+	// configure logging from device properties
+	Logger logger = LoggerFactory.getLogger(deviceName);
+	org.apache.log4j.Logger deviceLogger = org.apache.log4j.Logger.getLogger(deviceName);
+	if (deviceLogger != null) {
+	    deviceLogger.setLevel(Level.toLevel(level));
+	    // file logging
+	    if (isUsingFile) {
+		final String fileName = filePath + "/diary_" + refactorArchiverName(deviceName) + ".log";
+		// Rollover at midnight each day.
+		deviceLogger.addAppender(new DailyRollingFileAppender(new PatternLayout(
+			"%d{yyyy-MM-dd HH:mm:ss.SSS} %5p %c{1}: %m%n"), fileName, "'.'yyyy-MM-dd"));
+		// Rollover at the beginning of every minute.
+		// deviceLogger.addAppender(new DailyRollingFileAppender(new
+		// PatternLayout(
+		// "%d{yyyy-MM-dd HH:mm:ss.SSS} %5p %c{1}: %m%n"), fileName,
+		// "'.'yyyy-MM-dd-HH-mm"));
+	    }
+	    // console logging
+	    deviceLogger.addAppender(new ConsoleAppender(new PatternLayout(
+		    "%d{yyyy-MM-dd HH:mm:ss.SSS} %5p %c{1}: %m%n")));
+	}
+	return logger;
+    }
+
+    private static String refactorArchiverName(final String archiver) {
+	final String ret = archiver.substring(archiver.lastIndexOf("/") + 1);
+	return ret;
+    }
+}
diff --git a/src/main/resources/log4j.xml b/src/main/resources/log4j.xml
new file mode 100644
index 00000000..c40f377a
--- /dev/null
+++ b/src/main/resources/log4j.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<!-- An example log4j configuration xml file for log4jdbc -->
+<!-- Logging levels are:                                  -->
+<!-- DEBUG < INFO < WARN < ERROR < FATAL                  -->
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+  <appender name="stdout-appender" class="org.apache.log4j.ConsoleAppender">
+    <layout class="org.apache.log4j.PatternLayout">
+      <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p %c{1}: %m%n"/>
+    </layout>
+  </appender>
+
+  <appender name="sql-appender" class="org.apache.log4j.FileAppender">
+    <param name="File" value="./logs/sql.log"/>
+    <param name="Append" value="false"/>
+    <layout class="org.apache.log4j.PatternLayout">
+      <param name="ConversionPattern" value="-----&gt; %d{yyyy-MM-dd HH:mm:ss.SSS} &lt;%t&gt; %m%n%n"/>
+    </layout>
+  </appender>
+
+  <appender name="sql-timing-appender" class="org.apache.log4j.FileAppender">
+    <param name="File" value="./logs/sqltiming.log"/>
+    <param name="Append" value="false"/>
+    <layout class="org.apache.log4j.PatternLayout">
+      <param name="ConversionPattern" value="-----&gt; %d{yyyy-MM-dd HH:mm:ss.SSS} %m%n%n"/>
+    </layout>
+  </appender>
+
+  <appender name="jdbc-appender" class="org.apache.log4j.FileAppender">
+    <param name="File" value="./logs/jdbc.log"/>
+    <param name="Append" value="false"/>
+    <layout class="org.apache.log4j.PatternLayout">
+      <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n"/>
+    </layout>
+  </appender>
+
+  <appender name="jdbc-connection" class="org.apache.log4j.FileAppender">
+    <param name="File" value="./logs/connection.log"/>
+    <param name="Append" value="false"/>
+    <layout class="org.apache.log4j.PatternLayout">
+      <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n"/>
+    </layout>
+  </appender>
+
+  <!--
+       The Following 5 logs can be turned on and off while the server is running
+       LIVE in order to trace the SQL and/or all JDBC coming out of the application.
+
+       To turn a log on, set the level value to INFO or DEBUG (to see class name and
+       line number information in the log)  The DEBUG setting is much more inefficient
+       but the output is much more useful.
+
+       To turn off JDBC logging completely, you must set all 5 logs to a level higher 
+       than ERROR (FATAL is suggested.)
+  -->
+
+  <!-- log SQL (pre-execution) plus exceptions caused by SQL -->
+  <logger name="jdbc.sqlonly" additivity="false">
+    <level value="debug"/>
+    <appender-ref ref="stdout-appender"/>
+  </logger>
+
+  <!-- log SQL with timing information, post execution -->
+  <logger name="jdbc.sqltiming" additivity="false">
+    <level value="error"/>
+    <appender-ref ref="stdout-appender"/>
+  </logger>
+
+  <!-- only use the two logs below to trace ALL JDBC information,
+       NOTE:  This can be very voluminous!  -->
+
+  <!-- log all jdbc calls except ResultSet calls -->
+  <logger name="jdbc.audit" additivity="false">
+    <level value="error"/>
+    <appender-ref ref="stdout-appender"/>
+  </logger>
+
+  <!-- log the jdbc ResultSet calls -->
+  <logger name="jdbc.resultset" additivity="false">
+    <level value="error"/>
+    <appender-ref ref="stdout-appender"/>
+  </logger>
+  
+  <logger name="jdbc.resultsettable" additivity="false"> 
+    <level value="debug" /> 
+    <appender-ref ref="stdout-appender" /> 
+  </logger> 
+  
+  <!-- log connection open/close events and dump of all open connection numbers -->
+  <logger name="jdbc.connection" additivity="false">
+    <level value="error"/>
+    <appender-ref ref="stdout-appender"/>
+  </logger>
+
+  <!-- this log is for internal debugging of log4jdbc, itself -->
+  <!-- debug logging for log4jdbc itself -->
+  <logger name="log4jdbc.debug" additivity="false">
+    <level value="error"/>
+    <appender-ref ref="stdout-appender"/>
+  </logger>
+
+  <!-- by default, log everything to the console with a level of WARN or higher -->
+  <root>
+    <level value="error"/>
+    <appender-ref ref="stdout-appender"/>
+  </root>
+</log4j:configuration>
\ No newline at end of file
diff --git a/src/test/resources/log4j.xml b/src/test/resources/log4j.xml
new file mode 100644
index 00000000..27536bef
--- /dev/null
+++ b/src/test/resources/log4j.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+	<logger name="jacorb">
+		<level value="ERROR" />
+	</logger>
+
+</log4j:configuration>
-- 
GitLab