diff --git a/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Logger.java b/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Logger.java
index 5c8a2f8..68fed56 100644
--- a/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Logger.java
+++ b/ipojo/core/src/main/java/org/apache/felix/ipojo/util/Logger.java
@@ -133,35 +133,40 @@
         String message = null;
         switch (level) {
             case DEBUG:
-                message = "[" + m_name + "] DEBUG: " + msg;
+                message = "[DEBUG] " + m_name + " : " + msg;
                 if (log != null) {
                     log.log(LogService.LOG_DEBUG, message);
+                } else {
+                    System.err.println(message);
                 }
-                System.err.println(message); // NOPMD
                 break;
             case ERROR:
-                message = "[" + m_name + "] ERROR: " + msg;
+                message = "[ERROR] " + m_name + " : " + msg;
                 if (log != null) {
                     log.log(LogService.LOG_ERROR, message);
+                } else {
+                    System.err.println(message);
                 }
-                System.err.println(message); //NOPMD
                 break;
             case INFO:
-                message = "[" + m_name + "] INFO: " + msg;
+                message = "[INFO] " + m_name + " : " + msg;
                 if (log != null) {
                     log.log(LogService.LOG_INFO, message);
+                } else {
+                    System.err.println(message);
                 }
-                System.err.println(message); // NOPMD
                 break;
             case WARNING:
-                message = "[" + m_name + "] WARNING: " + msg;
+                message = "[WARNING] " + m_name + " : " + msg;
                 if (log != null) {
                     log.log(LogService.LOG_WARNING, message);
+                } else {
+                    System.err.println(message);
                 }
-                System.err.println(message); // NOPMD
                 break;
             default:
-                System.err.println("[" + m_name + "] UNKNOWN[" + level + "]: " + msg); // NOPMD
+                message = "[UNKNOWN] " + m_name + " : " + msg;
+                System.err.println(message);
                 break;
         }
         
@@ -187,40 +192,45 @@
         String message = null;
         switch (level) {
             case DEBUG:
-                message = "[" + m_name + "] DEBUG: " + msg;
+                message = "[DEBUG] " + m_name + " : " + msg;
                 if (log != null) {
                     log.log(LogService.LOG_DEBUG, message, exception);
+                } else {
+                    System.err.println(message);
+                    exception.printStackTrace();
                 }
-                System.err.println(message); // NOPMD
-                exception.printStackTrace(); // NOPMD
                 break;
             case ERROR:
-                message = "[" + m_name + "] ERROR: " + msg;
+                message = "[ERROR] " + m_name + " : " + msg;
                 if (log != null) {
                     log.log(LogService.LOG_ERROR, message, exception);
+                } else {
+                    System.err.println(message);
+                    exception.printStackTrace();
                 }
-                System.err.println(message); // NOPMD
-                exception.printStackTrace(System.err); // NOPMD
                 break;
             case INFO:
-                message = "[" + m_name + "] INFO: " + msg;
+                message = "[INFO] " + m_name + " : " + msg;
                 if (log != null) {
                     log.log(LogService.LOG_INFO, message, exception);
+                } else {
+                    System.err.println(message);
+                    exception.printStackTrace();
                 }
-                System.err.println(message); // NOPMD
-                exception.printStackTrace(System.err); // NOPMD
                 break;
             case WARNING:
-                message = "[" + m_name + "] WARNING: " + msg;
+                message = "[WARNING] " + m_name + " : " + msg;
                 if (log != null) {
                     log.log(LogService.LOG_WARNING, message, exception);
+                } else {
+                    System.err.println(message);
+                    exception.printStackTrace();
                 }
-                System.err.println(message); // NOPMD
-                exception.printStackTrace(System.err); // NOPMD
                 break;
             default:
-                System.err.println("[" + m_name + "] UNKNOWN[" + level + "]: " + msg); // NOPMD
-                exception.printStackTrace(); // NOPMD
+                message = "[UNKNOWN] " + m_name + " : " + msg;
+                System.err.println(message);
+                exception.printStackTrace();
                 break;
         }
         
diff --git a/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/xml/parser/XMLMetadataParser.java b/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/xml/parser/XMLMetadataParser.java
index 855b7b2..9a03b83 100644
--- a/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/xml/parser/XMLMetadataParser.java
+++ b/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/xml/parser/XMLMetadataParser.java
@@ -255,7 +255,7 @@
      * @see org.xml.sax.ErrorHandler#error(org.xml.sax.SAXParseException)
      */
     public void error(SAXParseException saxparseexception) throws SAXException {
-        if (saxparseexception.getMessage().contains("cvc-elt.1")) {
+        if (saxparseexception.getMessage().indexOf("cvc-elt.1") != -1) {
             return; // Do not throw an exception when no schema defined.
         }
         throw saxparseexception;
