code: func (m *Mux) logFiles(app string) (map[string][]string, error) {
  	files, err := ioutil.ReadDir(m.logDir)
  	if err != nil {
  		return nil, err
  	}
  
  	res := make(map[string][]string)
  	for _, f := range files {
  		n := f.Name()
  		if f.IsDir() || !strings.HasSuffix(n, ".log") || !appIDPrefixPattern.MatchString(n) || !strings.HasPrefix(n, app) {
  			continue
  		}
  		appID := n[:36]
  		res[appID] = append(res[appID], filepath.Join(m.logDir, n))
  	}
  
  	return res, nil
  }
docs: // logFiles returns a list of app IDs and the list of log file names associated
  // with them, from oldest to newest. There is always at least one file, the
  // current log for the app.