diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/equinox/log/test/LogServiceTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/equinox/log/test/LogServiceTest.java
index 5c16a48d..12d8773 100644
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/equinox/log/test/LogServiceTest.java
+++ b/bundles/org.eclipse.osgi.tests/src/org/eclipse/equinox/log/test/LogServiceTest.java
@@ -8,15 +8,24 @@
  *******************************************************************************/
 package org.eclipse.equinox.log.test;
 
+import java.util.Collections;
 import java.util.HashMap;
+import java.util.Hashtable;
 import java.util.Map;
 import junit.framework.TestCase;
 import org.eclipse.osgi.tests.OSGiTestsActivator;
+import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
-import org.osgi.service.log.*;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.log.LogEntry;
+import org.osgi.service.log.LogLevel;
+import org.osgi.service.log.LogReaderService;
+import org.osgi.service.log.LogService;
+import org.osgi.service.log.Logger;
 import org.osgi.service.log.admin.LoggerAdmin;
 import org.osgi.service.log.admin.LoggerContext;
 
+@SuppressWarnings("deprecation")
 public class LogServiceTest extends TestCase {
 
 	private LogService log;
@@ -267,4 +276,41 @@
 		assertTrue(entry.getException().getMessage().equals(t.getMessage()));
 		assertTrue(entry.getServiceReference() == logReference);
 	}
+
+	public void testServiceEventLog() throws InterruptedException {
+		BundleContext context = OSGiTestsActivator.getContext();
+		ServiceRegistration<Object> reg = context.registerService(Object.class, new Object(), null);
+		ServiceReference<Object> ref = reg.getReference();
+		listener.waitForLogEntry();
+
+		listener.waitForLogEntry();
+		LogEntry entry = listener.getEntryX();
+		assertEquals("Wrong logger name.", "Events.Service", entry.getLoggerName());
+		assertEquals("Wrong event log level.", LogLevel.INFO, entry.getLogLevel());
+		assertEquals("Wrong bundle.", context.getBundle(), entry.getBundle());
+		assertNull("Wrong exception.", entry.getException());
+		assertEquals("Wrong service reference.", ref, entry.getServiceReference());
+		assertEquals("Wrong message.", "ServiceEvent REGISTERED", entry.getMessage());
+
+		reg.setProperties(new Hashtable(Collections.singletonMap("key1", "value1")));
+
+		listener.waitForLogEntry();
+		entry = listener.getEntryX();
+		assertEquals("Wrong logger name.", "Events.Service", entry.getLoggerName());
+		assertEquals("Wrong event log level.", LogLevel.DEBUG, entry.getLogLevel());
+		assertEquals("Wrong bundle.", context.getBundle(), entry.getBundle());
+		assertNull("Wrong exception.", entry.getException());
+		assertEquals("Wrong service reference.", ref, entry.getServiceReference());
+		assertEquals("Wrong message.", "ServiceEvent MODIFIED", entry.getMessage());
+
+		reg.unregister();
+		listener.waitForLogEntry();
+		entry = listener.getEntryX();
+		assertEquals("Wrong logger name.", "Events.Service", entry.getLoggerName());
+		assertEquals("Wrong event log level.", LogLevel.INFO, entry.getLogLevel());
+		assertEquals("Wrong bundle.", context.getBundle(), entry.getBundle());
+		assertNull("Wrong exception.", entry.getException());
+		assertEquals("Wrong service reference.", ref, entry.getServiceReference());
+		assertEquals("Wrong message.", "ServiceEvent UNREGISTERING", entry.getMessage());
+	}
 }
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/LogServiceManager.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/LogServiceManager.java
index c9b7579..4d877d2 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/LogServiceManager.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/log/LogServiceManager.java
@@ -143,7 +143,7 @@
 		int logType = (eventType == ServiceEvent.MODIFIED) ? LogService.LOG_DEBUG : LogService.LOG_INFO;
 		if (logReaderServiceFactory.isLoggable(bundle, LOGGER_SERVICE_EVENT, logType)) {
 			LoggerImpl logger = (LoggerImpl) systemBundleLog.getLogger(LOGGER_SERVICE_EVENT);
-			logger.log(bundle, null, null, logType, getServiceEventTypeName(eventType), null);
+			logger.log(bundle, reference, null, logType, getServiceEventTypeName(eventType), null);
 		}
 	}
 
