diff --git a/core/composer.json b/core/composer.json
index ab2dc0e..4e6c99f 100644
--- a/core/composer.json
+++ b/core/composer.json
@@ -16,7 +16,8 @@
     "guzzle/http": "*",
     "kriswallsmith/assetic": "1.1.*@alpha",
     "symfony-cmf/routing": "1.0.*@dev",
-    "njh/easyrdf": "0.8.*"
+    "njh/easyrdf": "0.8.*",
+    "psr/log": "dev-master"
   },
   "minimum-stability": "dev"
 }
diff --git a/core/composer.lock b/core/composer.lock
index 07d030c..72cbb59 100644
--- a/core/composer.lock
+++ b/core/composer.lock
@@ -1,5 +1,5 @@
 {
-    "hash": "27b5fb7194e0d492c69d372d8ba17b2b",
+    "hash": "104b7319bd254e91c873e688a164a4f6",
     "packages": [
         {
             "name": "doctrine/common",
@@ -25,7 +25,6 @@
                     "dev-master": "2.3.x-dev"
                 }
             },
-            "installation-source": "dist",
             "autoload": {
                 "psr-0": {
                     "Doctrine\\Common": "lib/"
@@ -92,7 +91,6 @@
             },
             "time": "2012-12-06 02:26:39",
             "type": "library",
-            "installation-source": "source",
             "autoload": {
                 "psr-0": {
                     "Guzzle\\Common": ""
@@ -134,7 +132,6 @@
             },
             "time": "2012-11-18 05:28:55",
             "type": "library",
-            "installation-source": "source",
             "autoload": {
                 "psr-0": {
                     "Guzzle\\Http": ""
@@ -181,7 +178,6 @@
             },
             "time": "2012-11-19 00:07:13",
             "type": "library",
-            "installation-source": "source",
             "autoload": {
                 "psr-0": {
                     "Guzzle\\Parser": ""
@@ -222,7 +218,6 @@
             },
             "time": "2012-11-11 23:54:57",
             "type": "library",
-            "installation-source": "source",
             "autoload": {
                 "psr-0": {
                     "Guzzle\\Stream": ""
@@ -284,7 +279,6 @@
                     "dev-master": "1.1-dev"
                 }
             },
-            "installation-source": "dist",
             "autoload": {
                 "psr-0": {
                     "Assetic": "src/"
@@ -310,6 +304,44 @@
             ]
         },
         {
+            "name": "psr/log",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/log",
+                "reference": "1.0.0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://github.com/php-fig/log/archive/1.0.0.zip",
+                "reference": "1.0.0",
+                "shasum": ""
+            },
+            "time": "2012-12-21 11:40:51",
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "Psr\\Log\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for logging libraries",
+            "keywords": [
+                "log",
+                "psr",
+                "psr-3"
+            ]
+        },
+        {
             "name": "symfony-cmf/routing",
             "version": "dev-master",
             "target-dir": "Symfony/Cmf/Component/Routing",
@@ -336,7 +368,6 @@
                     "dev-master": "1.0-dev"
                 }
             },
-            "installation-source": "source",
             "autoload": {
                 "psr-0": {
                     "Symfony\\Cmf\\Component\\Routing": ""
@@ -360,39 +391,6 @@
             ]
         },
         {
-            "name": "njh/easyrdf",
-            "description": "EasyRdf is a PHP library designed to make it easy to consume and produce RDF.",
-            "version": "0.8.0",
-            "type": "library",
-            "keywords": ["RDF", "Semantic Web", "Turtle", "RDFa"],
-            "homepage": "http://www.aelius.com/njh/easyrdf/",
-            "license": "BSD-3-Clause",
-            "authors": [
-                {
-                    "name": "Nicholas Humfrey",
-                    "email": "njh@aelius.com",
-                    "homepage": "http://www.aelius.com/njh/",
-                    "role": "Developer"
-                }
-            ],
-            "support": {
-                "forum": "http://groups.google.com/group/easyrdf/",
-                "issues": "http://github.com/njh/easyrdf/issues"
-            },
-            "require": {
-                "php": ">=5.2.8"
-            },
-            "repositories": [
-                {
-                    "type": "vcs",
-                    "url": "https://github.com/njh/easyrdf"
-                }
-            ],
-            "autoload": {
-                "psr-0": { "EasyRdf": "lib/" }
-            }
-        },
-        {
             "name": "symfony/class-loader",
             "version": "dev-master",
             "target-dir": "Symfony/Component/ClassLoader",
@@ -420,7 +418,6 @@
                     "dev-master": "2.2-dev"
                 }
             },
-            "installation-source": "source",
             "autoload": {
                 "psr-0": {
                     "Symfony\\Component\\ClassLoader\\": ""
@@ -476,7 +473,6 @@
                     "dev-master": "2.2-dev"
                 }
             },
-            "installation-source": "source",
             "autoload": {
                 "psr-0": {
                     "Symfony\\Component\\DependencyInjection\\": ""
@@ -531,7 +527,6 @@
                     "dev-master": "2.2-dev"
                 }
             },
-            "installation-source": "source",
             "autoload": {
                 "psr-0": {
                     "Symfony\\Component\\EventDispatcher\\": ""
@@ -579,7 +574,6 @@
                     "dev-master": "2.2-dev"
                 }
             },
-            "installation-source": "source",
             "autoload": {
                 "psr-0": {
                     "Symfony\\Component\\HttpFoundation\\": ""
@@ -651,7 +645,6 @@
                     "dev-master": "2.2-dev"
                 }
             },
-            "installation-source": "source",
             "autoload": {
                 "psr-0": {
                     "Symfony\\Component\\HttpKernel\\": ""
@@ -694,7 +687,6 @@
             },
             "time": "2012-12-06 10:00:55",
             "type": "library",
-            "installation-source": "source",
             "autoload": {
                 "psr-0": {
                     "Symfony\\Component\\Process": ""
@@ -753,7 +745,6 @@
                     "dev-master": "2.2-dev"
                 }
             },
-            "installation-source": "source",
             "autoload": {
                 "psr-0": {
                     "Symfony\\Component\\Routing\\": ""
@@ -801,7 +792,6 @@
                     "dev-master": "2.2-dev"
                 }
             },
-            "installation-source": "source",
             "autoload": {
                 "psr-0": {
                     "Symfony\\Component\\Serializer\\": ""
@@ -849,7 +839,6 @@
                     "dev-master": "2.2-dev"
                 }
             },
-            "installation-source": "source",
             "autoload": {
                 "psr-0": {
                     "Symfony\\Component\\Yaml\\": ""
@@ -896,7 +885,6 @@
                     "dev-master": "1.11-dev"
                 }
             },
-            "installation-source": "dist",
             "autoload": {
                 "psr-0": {
                     "Twig_": "lib/"
@@ -932,6 +920,7 @@
         "twig/twig": 0,
         "doctrine/common": 0,
         "kriswallsmith/assetic": 15,
-        "symfony-cmf/routing": 20
+        "symfony-cmf/routing": 20,
+        "psr/log": 20
     }
 }
diff --git a/core/lib/Drupal/Core/CoreBundle.php b/core/lib/Drupal/Core/CoreBundle.php
index e9d6d2f..05e382a 100644
--- a/core/lib/Drupal/Core/CoreBundle.php
+++ b/core/lib/Drupal/Core/CoreBundle.php
@@ -175,6 +175,8 @@ public function build(ContainerBuilder $container) {
     $container->register('password', 'Drupal\Core\Password\PhpassHashedPassword')
       ->addArgument(16);
 
+    $container->register('logger.watchdog', 'Drupal\Core\WatchdogLogger');
+
     // The following services are tagged as 'nested_matcher' services and are
     // processed in the RegisterNestedMatchersPass compiler pass. Each one
     // needs to be set on the matcher using a different method, so we use a
diff --git a/core/lib/Drupal/Core/WatchdogLogger.php b/core/lib/Drupal/Core/WatchdogLogger.php
new file mode 100644
index 0000000..8594d86
--- /dev/null
+++ b/core/lib/Drupal/Core/WatchdogLogger.php
@@ -0,0 +1,83 @@
+<?php
+
+/**
+ * @file
+ * Contains Drupal\Core\WatchdogLogger.
+ */
+
+namespace Drupal\Core;
+
+use Psr\Log\AbstractLogger;
+use Psr\Log\LogLevel;
+
+/**
+ * Watchdog-backed implementation of the PSR-3 Logger interface.
+ */
+class WatchdogLogger extends AbstractLogger {
+
+  /**
+   * Map of PSR Log constants to Watchdog log constants.
+   *
+   * @var array
+   */
+  protected $levelTranslation;
+
+  /**
+   * Logs with an arbitrary level.
+   *
+   * @param mixed $level
+   *   One of the log levels defined by \Psr\Log\LogLevel.
+   * @param string $message
+   *   The message to record.
+   * @param array $context
+   *   An array of additional information relevant to this message. These values
+   *   may be substitued into the message.
+   *
+   * @return null
+   */
+  public function log($level, $message, array $context = array()) {
+
+    $type = isset($context['type']) ? $context['type'] : 'system';
+    $link = isset($context['link']) ? $context['link'] : NULL;
+
+    unset($context['type'], $context['link']);
+
+    // Escape all values in the message, but convert them to watchdog format.
+    $message = preg_replace('/\{(.*)\}/', '@$1', $message);
+
+    array_walk($context, function(&$element, $key) {
+      if (!in_array($key, array('exception', 'link'))) {
+        $element = '@' . $element;
+      }
+    });
+
+    watchdog($type, $message, $context, $this->mapLevel($level), $link);
+  }
+
+  /**
+   * Converts a PSR Log level to a Watchdog log level.
+   *
+   * @param string $level
+   *   A PSR-3 logging level string.
+   *
+   * @return int
+   *   The corresponding Watchdog constant.
+   */
+  protected function mapLevel($level) {
+    if (empty($this->levelTranslation)) {
+      $this->levelTranslation = array(
+        LogLevel::ALERT => WATCHDOG_ALERT,
+        LogLevel::CRITICAL => WATCHDOG_CRITICAL,
+        LogLevel::DEBUG => WATCHDOG_DEBUG,
+        LogLevel::EMERGENCY => WATCHDOG_EMERGENCY,
+        LogLevel::ERROR => WATCHDOG_ERROR,
+        LogLevel::INFO => WATCHDOG_INFO,
+        LogLevel::NOTICE => WATCHDOG_NOTICE,
+        LogLevel::WARNING => WATCHDOG_WARNING,
+      );
+    }
+
+    return $this->levelTranslation[$level];
+  }
+
+}
diff --git a/core/vendor/autoload.php b/core/vendor/autoload.php
index 622540f..1b62918 100644
--- a/core/vendor/autoload.php
+++ b/core/vendor/autoload.php
@@ -4,4 +4,4 @@
 
 require_once __DIR__ . '/composer' . '/autoload_real.php';
 
-return ComposerAutoloaderInit4f0cafaacf65c45167c785b9f087e425::getLoader();
+return ComposerAutoloaderInit88d9f0ec0c30a36f205621c5dbafe66b::getLoader();
diff --git a/core/vendor/composer/autoload_namespaces.php b/core/vendor/composer/autoload_namespaces.php
index 4fa7f51..e4c2d29 100644
--- a/core/vendor/composer/autoload_namespaces.php
+++ b/core/vendor/composer/autoload_namespaces.php
@@ -17,11 +17,11 @@
     'Symfony\\Component\\DependencyInjection\\' => $vendorDir . '/symfony/dependency-injection/',
     'Symfony\\Component\\ClassLoader\\' => $vendorDir . '/symfony/class-loader/',
     'Symfony\\Cmf\\Component\\Routing' => $vendorDir . '/symfony-cmf/routing/',
+    'Psr\\Log\\' => $vendorDir . '/psr/log/',
     'Guzzle\\Stream' => $vendorDir . '/guzzle/stream/',
     'Guzzle\\Parser' => $vendorDir . '/guzzle/parser/',
     'Guzzle\\Http' => $vendorDir . '/guzzle/http/',
     'Guzzle\\Common' => $vendorDir . '/guzzle/common/',
     'Doctrine\\Common' => $vendorDir . '/doctrine/common/lib/',
     'Assetic' => $vendorDir . '/kriswallsmith/assetic/src/',
-    'EasyRdf_' => $vendorDir . '/njh/easyrdf/lib/',
 );
diff --git a/core/vendor/composer/autoload_real.php b/core/vendor/composer/autoload_real.php
index d492d5c..b6ef53a 100644
--- a/core/vendor/composer/autoload_real.php
+++ b/core/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
 
 // autoload_real.php generated by Composer
 
-class ComposerAutoloaderInit4f0cafaacf65c45167c785b9f087e425
+class ComposerAutoloaderInit88d9f0ec0c30a36f205621c5dbafe66b
 {
     private static $loader;
 
@@ -19,9 +19,9 @@ public static function getLoader()
             return self::$loader;
         }
 
-        spl_autoload_register(array('ComposerAutoloaderInit4f0cafaacf65c45167c785b9f087e425', 'loadClassLoader'));
+        spl_autoload_register(array('ComposerAutoloaderInit88d9f0ec0c30a36f205621c5dbafe66b', 'loadClassLoader'));
         self::$loader = $loader = new \Composer\Autoload\ClassLoader();
-        spl_autoload_unregister(array('ComposerAutoloaderInit4f0cafaacf65c45167c785b9f087e425', 'loadClassLoader'));
+        spl_autoload_unregister(array('ComposerAutoloaderInit88d9f0ec0c30a36f205621c5dbafe66b', 'loadClassLoader'));
 
         $vendorDir = dirname(__DIR__);
         $baseDir = dirname($vendorDir);
@@ -36,7 +36,7 @@ public static function getLoader()
             $loader->addClassMap($classMap);
         }
 
-        $loader->register();
+        $loader->register(true);
 
         return $loader;
     }
diff --git a/core/vendor/composer/installed.json b/core/vendor/composer/installed.json
index bb8d2e1..16bcc44 100644
--- a/core/vendor/composer/installed.json
+++ b/core/vendor/composer/installed.json
@@ -903,5 +903,45 @@
         ],
         "description": "Symfony Yaml Component",
         "homepage": "http://symfony.com"
+    },
+    {
+        "name": "psr/log",
+        "version": "dev-master",
+        "version_normalized": "9999999-dev",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/php-fig/log",
+            "reference": "1.0.0"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://github.com/php-fig/log/archive/1.0.0.zip",
+            "reference": "1.0.0",
+            "shasum": ""
+        },
+        "time": "2012-12-21 11:40:51",
+        "type": "library",
+        "installation-source": "source",
+        "autoload": {
+            "psr-0": {
+                "Psr\\Log\\": ""
+            }
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "MIT"
+        ],
+        "authors": [
+            {
+                "name": "PHP-FIG",
+                "homepage": "http://www.php-fig.org/"
+            }
+        ],
+        "description": "Common interface for logging libraries",
+        "keywords": [
+            "log",
+            "psr",
+            "psr-3"
+        ]
     }
 ]
diff --git a/core/vendor/psr/log b/core/vendor/psr/log
new file mode 160000
index 0000000..fe0936e
--- /dev/null
+++ b/core/vendor/psr/log
@@ -0,0 +1 @@
+Subproject commit fe0936ee26643249e916849d48e3a51d5f5e278b
