CocoaLumberjack is one of the most popular logging frameworks available for iOS development and testing. It is specifically designed for advanced development practices and that’s why it is not the easiest option for first timers. Although the framework has many amazing features it is mainly known for its pluggable architecture and granular configuration. The installation process is very easy with CocoaPods.
Although CocoaLumberjack is designed based on similar concepts that other logging systems like log4j use but unlike others CocoaLumberjack is designed exclusively for the iOS platform, so works perfectly with Objective-C and Swift. Because of the same reason it is more effective and efficient by using iOS features, such as Grand Central Dispatch, lockless atomic operations, multi threading and the dynamic nature of the runtime.
Some other popular attributes of CocoaLumberjack:
- Performance is a strong trait of CocoaLumberjack, as in most of the cases it delivers faster results than NSlog.
- The logging configuration of CocoaLumberjack is very flexible. You can send a single statement to many loggers at the same time that leads to logging to file and logging to the console concurrently. Interestingly, you can direct the log files to any destination you want; you can send them to a file, a networked server and even to a database.
- Like its setup, using CocoaLumberjack with iOS apps is extremely easy; all it takes is a single line of code for configuration and that’s it.
CocoaLumberjack is a suitable option for you if you want to track down a mysterious bug that pops up on specific devices and not on others, you want to go up the ladder and improve the performance and stability of your mobile applications and take them to the next level and if you don’t like the short console log on iOS devices.
Requirements and Compatibility
The latest version of CocoaLumberjack is 2.3.x and it is compatible with Xcode 7.3 or later, TV OS 9 or later, iOS 5 or later, OSX 10.7 or later and Watch OS 2 or later.
If you are using older versions of any of the tools mentioned above, then you can still use CocoaLumberjack 2.2.0 for Xcode 7.2, CocoaLumberjack 2.1.0 for Xcode 7.0 or older versions, CocoaLumberjack 2.0.x for Xcode 6 or older versions and CocoaLumberjack 1.6.0 for earlier versions of OSX 10.7.
What Are 1000 Apps Doing to Reduce Their Bugs to Zero?
Down to Zero is a practical guide to solving bugs. Our team has been developing mobile apps for over a decade and we'd like to share some tips we've picked up along the way.
Common Issues
Because of the powerful community, there are very few persistent issues with CocoaLumberjack and even the common issues have 100% working solutions. Let’s see some common issues associated with CocoaLumberjack and their solutions:
- Xcode modern syntax is only available in Xcode 4.4 or later versions. In rare case, if you are using and older version, you would experience compatibility issues and the simple solution is upgrading your Xcode to the latest version. However, because of some reason if you are bound to use an older version then use older version of CocoaLumberjack accordingly (mentioned above).
- NSConcreteStackBlock is a common error that you might experience while launching the app. The error message states “Symbol not found”. This issue is because of LLVM and usually occurs on Xcode 3. The solution of this particular issue is thoroughly described on StackOverflow.
Bugfender is 100% compatible with CocoaLumberjack and both tools together can dramatically increase the quality of your mobile apps. Bugfender is a powerful logging framework that can gather detailed logs from intended devices and send those logs to the server. As the data is stored on our servers, you are able to review it later whenever you want.
You could be worrying about the volume of collected data and its impact on the performance of the device. With Bugfender you can activate and deactivate it on specific devices based on the need of the hour.
Also, Bugfender is specifically designed to use very little resources like battery power, performance and network bandwidth. That means its impact on the device is negligible. Unlike similar tools like Crashlytics, Bugfender does not solely focus on total failure and crashes but it also records performance anomalies and abnormal behavior of the apps.
Not all bugs lead to crash and focusing on total failure while neglecting performance issues and stability problems is pointless. As mentioned above, you can turn on/off Bugfender on specific devices that mean there is no need of running Bugfender in the background all the time. Developers can use this revolutionary tool to discover bugs before users do.
Another benefit of Bugfender is its ability to help developers overcome the issue of fragmentation which was earlier associate with Android devices exclusively but now there are many variants of iOS devices in the market with millions of users each. Except big developing companies which can afford significant sum on testing phase, it is not possible for small time developers to test their apps on real devices.
Not all bugs can be reproduced in lab and that’s why the detailed logging system of Bugfender is important for developers as they can analyze it and discover the root cause of a specific problem that occurs only on specific devices with specific OS version.
Check the documentation on how to integrate Cocoalumberjack with Bugfender.