diff --git a/Utils/Logger/Target.cc b/Utils/Logger/Target.cc
index 2cc923d004c1e3ff06eb3ac0dff08b8cbf042737..a277dd58203fb280747583abdb3387c2483f9de7 100644
--- a/Utils/Logger/Target.cc
+++ b/Utils/Logger/Target.cc
@@ -85,6 +85,8 @@ prefix_ void senf::log::Target::unroute(std::string const & stream, std::string
 
 prefix_ void senf::log::Target::unroute(int index)
 {
+    if (rib_.empty())
+        return;
     RIB::iterator i;
     if (index < 0) {
         if (RIB::size_type(-index) >= rib_.size())
@@ -110,6 +112,17 @@ prefix_ void senf::log::Target::unroute(int index)
         updateRoutingCache(entry.stream_, entry.area_);
 }
 
+prefix_ void senf::log::Target::clear()
+{
+    RIB old;
+    rib_.swap(old);
+    RIB::const_iterator i (old.begin());
+    RIB::const_iterator const i_end (old.end());
+    for (; i != i_end; ++i)
+        if (i->action_ == ACCEPT)
+            updateRoutingCache(i->stream_, i->area_)
+}
+
 ////////////////////////////////////////
 // private members
 
diff --git a/Utils/Logger/Target.cci b/Utils/Logger/Target.cci
index c7854973df34fbb0a7841109961d36213192ca9b..60279399763d42383a80c92147c50a7c96d69330 100644
--- a/Utils/Logger/Target.cci
+++ b/Utils/Logger/Target.cci
@@ -56,6 +56,24 @@ prefix_ senf::log::Target::iterator senf::log::Target::end()
     return rib_.end();
 }
 
+prefix_ RoutingEntry const & senf::log::Target::operator[](size_type i)
+    size_type size() const
+{
+    return rib_[i];
+}
+
+prefix_ RoutingEntry const & senf::log::Target::operator[](size_type i)
+    size_type size() const
+{
+    return rib_.size();
+}
+
+prefix_ bool senf::log::Target::empty()
+    const
+{
+    return rib_.empty();
+}
+
 ///////////////////////////////////////////////////////////////////////////
 // senf::log::Target::RoutingEntry
 
diff --git a/Utils/Logger/Target.hh b/Utils/Logger/Target.hh
index 622adf1e5762df4217c2f79af25cde42542504c6..e969f1a8f326ab5120e39233c03743207661495a 100644
--- a/Utils/Logger/Target.hh
+++ b/Utils/Logger/Target.hh
@@ -179,6 +179,7 @@ namespace log {
 
     public:
         typedef RIB::const_iterator iterator; ///< Routing table iterator
+        typedef RIB::size_type size_type;
 
         ///////////////////////////////////////////////////////////////////////////
         ///\name Structors and default members
@@ -332,6 +333,13 @@ namespace log {
         iterator begin() const;         ///< Iterator to beginning of routing table
         iterator end() const;           ///< Iterator past the end of routing table
 
+        RoutingEntry const & operator[](size_type i) ///< Access routing entry
+
+        size_type size() const;         ///< Number of routing table entries
+        bool empty() const;             ///< \c true, if routing table empty, \c false otherwise
+
+        void clear();                   ///< Clear routing table
+
     private:
         void route(detail::StreamBase const * stream, detail::AreaBase const * area,
                    unsigned level, action_t action, int index);