GrouperLog.info(LOG, s.toString(), msg);  eff.setSession(s); }
GrouperLog.info(LOG, fake.toString(), msg); }
  private void _eff(    GrouperSession root, GrouperSession s, String msg, String name,     Subject subj, Field f,Membership eff, String field  )  {    // Proxy as root so that we don't run into priv problems    eff.setSession(root);    // Get eff owner    try {      Group g = eff.getGroup();      msg += "group=" + g.getName();    }    catch (GroupNotFoundException eGNF) {      try {        Stem ns = eff.getStem();        msg += "stem=" + ns.getName();      }      catch (StemNotFoundException eSNF) {        GrouperLog.error(LOG, s, ERR_EFF_ONF);        msg += "owner=???";      }    }       // Get eff field    msg += " " + field + eff.getList().getName();    // Get eff subject    try {      Subject subject = eff.getMember().getSubject();      msg += " subject=" + SubjectHelper.getPretty(subject);    }    catch (Exception e) {      GrouperLog.error(LOG, s, ERR_EFF_SNF);      msg += "subject=???";    }    // Get added or removed message that caused this effective membership change    msg += " (" + name + " ";;    if      (f.getType().equals(FieldType.ACCESS)) {      msg += "priv=" + f.getName();    }    else if (f.getType().equals(FieldType.LIST)) {      msg += "list=" + f.getName();    }    else if (f.getType().equals(FieldType.NAMING)) {      msg += "priv=" + f.getName();    }    // Get added or removed subject that caused this effective    // membership change    msg += " subject=" + SubjectHelper.getPretty(subj) + ")";    // Now log it    GrouperLog.info(LOG, s.toString(), msg);    // Reset to the original session    eff.setSession(s);  } // private void _eff(root, s, msg, name, subj, f, eff, field)