All Projects → square → Aardvark

square / Aardvark

Licence: apache-2.0
Aardvark is a library that makes it dead simple to create actionable bug reports.

Projects that are alternatives of or similar to Aardvark

Monolog Bundle
Symfony Monolog Bundle
Stars: ✭ 2,532 (+937.7%)
Mutual labels:  logging
Timber Elixir
🌲 Great Elixir logging made easy
Stars: ✭ 226 (-7.38%)
Mutual labels:  logging
Datav
📊https://datav.io is a modern APM, provide observability for your business, application and infrastructure. It's also a lightweight alternative to Grafana.
Stars: ✭ 2,757 (+1029.92%)
Mutual labels:  logging
Logarr
“Logarr” is a self-hosted PHP web app that consolidates, formats, and displays log and text files for easy analysis and monitoring.
Stars: ✭ 216 (-11.48%)
Mutual labels:  logging
Applicationinsights Home
Application Insights main repository for documentation of overall SDK offerings for all platforms.
Stars: ✭ 221 (-9.43%)
Mutual labels:  logging
Applicationinsights Node.js
Microsoft Application Insights SDK for Node.js
Stars: ✭ 229 (-6.15%)
Mutual labels:  logging
Tracker Enabled Dbcontext
Tracker-enabled DbContext offers you to implement full auditing in your database
Stars: ✭ 210 (-13.93%)
Mutual labels:  logging
Express Typescript
Express + TypeScript + Boilerplate for Web / API App
Stars: ✭ 230 (-5.74%)
Mutual labels:  logging
Mulog
μ/log is a micro-logging library that logs events and data, not words!
Stars: ✭ 222 (-9.02%)
Mutual labels:  logging
Chromelogger Python
Python library for logging variables to Google Chrome console
Stars: ✭ 232 (-4.92%)
Mutual labels:  logging
Apigatewaydemo
🌱 Simple samples that use Ocelot to build API Gateway.
Stars: ✭ 217 (-11.07%)
Mutual labels:  logging
Nanolog
Nanosecond scale logger inspired by https://github.com/PlatformLab/NanoLog
Stars: ✭ 220 (-9.84%)
Mutual labels:  logging
Tracker
Laravel Stats Tracker
Stars: ✭ 2,638 (+981.15%)
Mutual labels:  logging
Graypy
Python logging handler for Graylog that sends messages in GELF (Graylog Extended Log Format).
Stars: ✭ 211 (-13.52%)
Mutual labels:  logging
Fluent Bit
Fast and Lightweight Logs and Metrics processor for Linux, BSD, OSX and Windows
Stars: ✭ 3,223 (+1220.9%)
Mutual labels:  logging
Trixi
Manage your machine learning experiments with trixi - modular, reproducible, high fashion. An experiment infrastructure optimized for PyTorch, but flexible enough to work for your framework and your tastes.
Stars: ✭ 211 (-13.52%)
Mutual labels:  logging
Pysnooper
Never use print for debugging again
Stars: ✭ 14,815 (+5971.72%)
Mutual labels:  logging
Instrumentedsql
A sql driver that will wrap any other driver and log/trace all its calls
Stars: ✭ 244 (+0%)
Mutual labels:  logging
Utern
Multi group and stream log tailing for AWS CloudWatch Logs.
Stars: ✭ 241 (-1.23%)
Mutual labels:  logging
Golog
A high-performant Logging Foundation for Go Applications. X3 faster than the rest leveled loggers.
Stars: ✭ 208 (-14.75%)
Mutual labels:  logging

Aardvark

CI Status Carthage Compatibility License Platform

Aardvark Version CoreAardvark Version AardvarkLoggingUI Version AardvarkMailUI Version

Aardvark makes it dead simple to create actionable bug reports.

Aardvark is made up of a collection of frameworks that provide different bug reporting and logging components.

  • CoreAardvark - The core structures for Aardvark. Safe to run in app extensions.
  • Aardvark - The core tools for building a bug report.
  • AardvarkMailUI - A bug reporter implementation that sends the bug report via an email composer.
  • AardvarkLoggingUI - UI components for viewing Aardvark logs in an iOS app.

Getting Started

There are only three steps to get Aardvark logging and bug reporting up and running.

1) Install Aardvark

The easiest way to get Aardvark up and running is to add a dependency on the AardvarkMailUI framework.

Using CocoaPods

pod 'AardvarkMailUI'

Using Carthage

github "Square/Aardvark"

Using Git Submodules

Manually checkout the submodule with git submodule add [email protected]:Square/Aardvark.git, drag Aardvark.xcodeproj to your project, and add AardvarkMailUI as a build dependency.

2) Set up email bug reporting with a single method call

It is best to do this when you load your application’s UI.

In Swift:

Aardvark.addDefaultBugReportingGestureWithEmailBugReporter(withRecipient:)

In Objective-C:

[Aardvark addDefaultBugReportingGestureWithEmailBugReporterWithRecipient:]

3) Replace calls to print with log.

In Swift, replace calls to print with log. In Objective-C, replace calls to NSLog with ARKLog.

Reporting Bugs

After doing the above, your users can report a bug by making a two-finger long-press gesture. This gesture triggers a UIAlert asking the user what went wrong. When the user enters this information, an email bug report is generated complete with an attached app screenshot and a text file containing the last 2000 logs. Screenshots are created and stored within Aardvark and do not require camera roll access.

Bug Report Flow

Want to look at logs on device? Add the AardvarkLoggingUI framework as a dependency and push an instance of ARKLogTableViewController onto the screen to view your logs.

Performance

Logs are distributed to loggers on an internal background queue that will never slow down your app. Logs observed by the log store are incrementally appended to disk and not stored in memory.

Exception Logging

To turn on logging of uncaught exceptions, call ARKEnableLogOnUncaughtException(). When an uncaught exception occurs, the stack trace will be logged to the default log distributor. To test this out in the sample app, hold one finger down on the screen for at least 5 seconds.

Once the exception is logged, it will be propogated to any existing uncaught exception handler. By default, the exception will be logged to the default log distributor. To log to a different distributor, call ARKEnableLogOnUncaughtExceptionToLogDistributor(...). You can enable logging to multiple log distributors by calling the method multiple times.

Customize Aardvark

Want to customize how bug reports are filed? Pass your own object conforming to the ARKBugReporter protocol and the desired subclass of UIGestureRecognizer to [Aardvark addBugReporter:triggeringGestureRecognizerClass:]. You can further customize how bug reports will be triggered by modifying the returned gesture recognizer.

Want to change how logs are formatted? Or use different log files for different features? Or send your logs to third party services? Check out the logging documentation.

Want to log with Aardvark but don’t want to use Aardvark’s bug reporting tool? Change the dependency to be on Aardvark and skip step #2 in the Getting Started guide.

Requirements

  • Xcode 11.0 or later
  • iOS 12.0 or later
  • watchOS 4.0 or later

Contributing

We’re glad you’re interested in Aardvark, and we’d love to see where you take it. Please read our contributing guidelines prior to submitting a Pull Request.

Thanks, and happy logging!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].