/** @see com.emc.atmos.sync.plugins.SyncPlugin#filter(com.emc.atmos.sync.plugins.SyncObject) */
  @Override
  public synchronized void filter(SyncObject obj) {
    try {
      if (out == null) {
        out = new PrintWriter(new BufferedWriter(new FileWriter(new File(filename))));
      }
    } catch (IOException e) {
      throw new RuntimeException("Error writing to ID log file: " + e.getMessage(), e);
    }

    try {
      getNext().filter(obj);
      out.println(obj.getSourceURI().toASCIIString() + ", " + obj.getDestURI().toASCIIString());
    } catch (RuntimeException e) {
      // Log the error
      out.println(obj.getSourceURI().toASCIIString() + ", FAILED: " + e.getMessage());
      throw e;
    }
  }