Listing 6

// 5Filtered.cpp

class FilteredLog: public ErrorLogger
{
public:
  FilteredLog() {}
  virtual void Error( const string& msg )
  {
    if( msg.find("[1]") != string::npos )
      cerr << msg;
  }
  virtual void Log( const string& msg )
  {
    if( msg.find("[netstats]") != string::npos )
      cout << msg;
  }
};