I think we want to put this in a place where it will will always record (regardless of failure) or in a place where it will only record if it passes a (possibly null) check. 

In the first case, it should go in App. In the second it should go in the specific file loader *after* a schema/other guard. If we choose the latter case, it should go after the check, i.e.:
```
 if (use_main_schema) {
    std::stringstream ss;
    ss << buildSchema();
    parser_->validate(ss);
  }

// record file now
```