diff --git a/bundles/org.eclipse.emf.emfforms.localization/META-INF/MANIFEST.MF b/bundles/org.eclipse.emf.emfforms.localization/META-INF/MANIFEST.MF
index 536b267..60f3517 100644
--- a/bundles/org.eclipse.emf.emfforms.localization/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.emf.emfforms.localization/META-INF/MANIFEST.MF
@@ -7,5 +7,6 @@
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
 Import-Package: org.eclipse.osgi.service.localization;version="[1.1.0,2.0.0)",
- org.osgi.framework;version="[1.3.0,2.0.0)"
+ org.osgi.framework;version="[1.3.0,2.0.0)",
+ org.osgi.service.log;version="1.3.0"
 Export-Package: org.eclipse.emf.emfforms.spi.localization;version="1.6.0"
diff --git a/bundles/org.eclipse.emf.emfforms.localization/src/org/eclipse/emf/emfforms/spi/localization/LocalizationServiceHelper.java b/bundles/org.eclipse.emf.emfforms.localization/src/org/eclipse/emf/emfforms/spi/localization/LocalizationServiceHelper.java
index a7e9d88..1295040 100644
--- a/bundles/org.eclipse.emf.emfforms.localization/src/org/eclipse/emf/emfforms/spi/localization/LocalizationServiceHelper.java
+++ b/bundles/org.eclipse.emf.emfforms.localization/src/org/eclipse/emf/emfforms/spi/localization/LocalizationServiceHelper.java
@@ -19,6 +19,7 @@
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.FrameworkUtil;
 import org.osgi.framework.ServiceReference;
+import org.osgi.service.log.LogService;
 
 /**
  * Helper class for retrieving translated strings.
@@ -37,10 +38,18 @@
 	}
 
 	private final BundleContext bundleContext;
+	private ServiceReference<LogService> logServiceReference;
+	private LogService logService;
 
 	private LocalizationServiceHelper() {
 		bundleContext = FrameworkUtil.getBundle(LocalizationServiceHelper.class)
 			.getBundleContext();
+
+		logServiceReference = bundleContext.getServiceReference(LogService.class);
+		if (logServiceReference == null) {
+			return;
+		}
+		logService = bundleContext.getService(logServiceReference);
 	}
 
 	private String getLocale() {
@@ -61,11 +70,21 @@
 		final BundleLocalization bundleLocalization = bundleContext.getService(serviceReference);
 		final ResourceBundle resourceBundle = bundleLocalization.getLocalization(bundle, localeLanguage);
 		if (resourceBundle == null) {
-			// TODO log -> move report service in common
+			logService
+				.log(
+					LogService.LOG_WARNING,
+					String
+						.format(
+							"No ResourceBundle found for Language '%1$s' in Bundle %2$s with Version %3$s.", localeLanguage, bundle.getSymbolicName(), bundle.getVersion().toString())); //$NON-NLS-1$
 			return key;
 		}
 		if (!resourceBundle.containsKey(key)) {
-			// TODO log -> move report service in common
+			logService
+				.log(
+					LogService.LOG_WARNING,
+					String
+						.format(
+							"The ResourceBundle for Language '%1$s' in Bundle %2$s with Version %3$s doesn't contain the key '%4$s'.", localeLanguage, bundle.getSymbolicName(), bundle.getVersion().toString(), key)); //$NON-NLS-1$
 			return key;
 		}
 		final String result = resourceBundle.getString(key);
