If you have an application working under Xcode 7 or earlier, when upgrading to Xcode 8 Bugfender will be unable to fetch your NSLogs automatically when running your applications on real devices.

Why?

Starting in iOS 10, Apple has introduced some new logging APIs, the family of os_log functions. At the same time, current logging APIs such as NSLog and asl_* have been deprecated. In order to make the transition smooth they have been mapped to the new APIs behind the scenes.

During this process, one of the API calls required by Bugfender (asl_search) has been deprecated without warning and, intentionally, no alternative has been provided. This means that when compiling against the iOS 10 SDK you will automatically be using the new APIs and Bugfender’s automated collection of logs will stop working when running on real devices (it will work, however, on simulators). This happens in most cases when you upgrade to Xcode 8.

Recommended action

Use a logging framework like CocoaLumberjack or XCGLogger. Bugfender will keep working after the transition to iOS 10.

If you use NSLog for logging and do not want to use a logging framework, we advise you to use BFLog instead. It has exactly the same syntax. You can quickly switch with a global search & replace in the project:

  • In Xcode, select Find > Find and Replace in Workspace…
  • Search for: NSLog
  • Replace with: BFLog
Did this answer your question?