:closed_book: Swift Logging Utility for Xcode Google Docs

Related tags

QorumLogs
Overview

QorumLogs

Cocoapods Compatible Carthage compatible

Swift Logging Utility in Xcode & Google Docs

Log Levels

class MyAwesomeViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        QL1("Debug")
        QL2("Info")
        QL3("Warning")
        awesomeFunction()
    }
    func awesomeFunction() {
        QL4("Error")
    }
}

demo




Works for both night mode and lightmode

demo


Autocomplete Friendly: Type 2 Letters

-demo


Filter File Specific Logs:

Paste this where QorumLogs is initiliazed:

  QorumLogs.onlyShowThisFile(NewClass)

demo


Google Docs Support:

In production, send all your logs to Google Docs with only 1 line of extra code.

  QorumLogs.enabled = false
  QorumOnlineLogs.enabled = true

demo




Spot System Logs:

System logs are white (or black) after all, yours are not :)

demo

Installation

Prerequisites

  1. If you don't have Alcatraz or XcodeColors installed, lets install them. Open up your terminal and paste this:
curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh | sh
  1. Restart Xcode after the installation
  2. Alcatraz requires Xcode Command Line Tools, which can be installed in Xcode > Preferences > Downloads. (You might not need this in the latest Xcode version)
  3. In Xcode click Window > Package Manager, type in 'XcodeColors' in the search bar. Click Install.
  4. Restart Xcode after the installation

Install via Cocoapods

You can use Cocoapods to install QorumLogs by adding it to your Podfile:

platform :ios, '8.0' # platform :tvos, '9.0' (for tvOS)
use_frameworks!

pod 'QorumLogs' #Stable release for Swift 3.0

pod 'QorumLogs', :git => 'https://github.com/goktugyil/QorumLogs.git' #Latest release for Swift 3.0
pod 'QorumLogs', :git => 'https://github.com/goktugyil/QorumLogs.git', :branch => 'Swift2.3' #For Swift 2.3
pod 'QorumLogs', '~> 0.8' #For Swift 2.2

(Cocoapods forces you to import the framework in every file. If anyone has a solution or workaround, inform me please)

Install via Carthage

You can install QorumLogs via Carthage by adding the following line to your Cartfile:

github "goktugyil/QorumLogs"

Install Manually

Download and drop 'QorumLogs.swift' in your project.

Check Installation Works Correctly

  1. In your AppDelegate or anywhere else enter this: (If Cocoapods or Carthage you must add import QorumLogs)
QorumLogs.enabled = true
QorumLogs.test()
  1. You will see something this:

demo

Congratulations!

Log Storage in GoogleDocs (Optional, ~4 minutes)

[Learn to integrate GoogleDocs](./Log To GoogleDocs.md)

Detailed Features:

Log Levels

Sets the minimum log level that is seen in the debug area:

  1. Debug - Detailed logs only used while debugging
  2. Info - General information about app state
  3. Warning - Indicates possible error
  4. Error - An unexpected error occured, its recoverable
  QorumLogs.minimumLogLevelShown = 2
  QorumOnlineLogs.minimumLogLevelShown = 4 // Its a good idea to have OnlineLog level a bit higher
  QL1("mylog") // Doesn't show this level anywhere, because minimum level is 2
  QL2("mylog")  // Shows this only in debugger
  QL3("mylog") // Shows this only in debugger
  QL4("mylog") // Shows this in debugger and online logs

QL methods can print in both Debugger and Google Docs, depending on which is active.

Hide Other Classes

You need to write the name of the actual file, you can do this by a string and also directly the class name can be appropriate if it is the same as the file name. Add the following code where you setup QorumLogs:

  QorumLogs.onlyShowThisFile(MyAwesomeViewController)
  QorumLogs.onlyShowThisFile("MyAwesomeViewController")

You do not need the extension of the file.

Print Lines

  QLPlusLine()
  QL2("Text between line")
  QLShortLine()

demo

Add Custom Colors

Add custom colors for Mac, iOS, tvOS:

    QorumLogs.colorsForLogLevels[0] = QLColor(r: 255, g: 255, b: 0)
    QorumLogs.colorsForLogLevels[1] = QLColor(red: 255, green: 20, blue: 147)
    QL1("Mylog")

demo

OnlineLogs - User Information

   QorumOnlineLogs.extraInformation["userId"] = "sfkoFvvbKgr"
   QorumOnlineLogs.extraInformation["name"] = "Will Smith"
   QL1("Will is awesome!")
   QL5("Will rules!")

demo

You only need to set the extraInformation one time.

KZLinkedConsole support:

KZLinkedConsole is a plugin for Xcode which add clickable link to place in code from log was printed. All you need to do is install it. For more information go to https://github.com/krzysztofzablocki/KZLinkedConsole

FAQ

How to delete rows inside google docs?

Unfortunately you can't just select the rows inside Google Docs and delete them. You need to select the rows where there are row numbers, then right click, then press delete click "Delete rows x-y" http://i.imgur.com/0XyAAbD.png

Requirements

  • Xcode 6 or later (Tested on 6.4)
  • iOS 7 or later (Tested on 7.1)
  • tvOS 9 or later

Possible features

  • Different colors for white and black Xcode themes
  • Easily editable colors
  • Device information to Google Docs
  • Google Docs shows in exact order
  • Automatically getting entry ids for Google Docs
  • Pod support with QL methods written customly

Thanks for making this possible

License

QorumLogs is available under the MIT license. See the LICENSE file.

Keywords

Debugging, logging, remote logging, remote debugging, qorum app, swift log, library, framework, tool, google docs, google drive, google forms

Issues
  • Added Xcode project for iOS framework

    Added Xcode project for iOS framework

    An Xcode project was added to provide a framework for iOS, which can be imported easily into other projects. It may be necessary to modify the project to allow it being added to OS X or tvOS projects. This may also affect the podspec file.

    opened by sundance2000 6
  • Mac OS X support

    Mac OS X support

    opened by konradzdunczyk 5
  • Renamed log levels and added Xcode project for iOS framework

    Renamed log levels and added Xcode project for iOS framework

    Hi,

    I really like the QorumLogs and use it now in my projects. The only thing, which bothers me, is the naming of the logging functions. To my opinion, function names should be descriptive like "QLogError" and should not contain just three characters like "QL4". This improves the readability of code and makes it easier to identify the log level by name. Maybe you agree and want to add this to your code.

    I also like to make frameworks out of external code, so it can be reused in other projects without copying the source files into the project. I know this can also be done with CocoaPods and you already provide a podspec file. But currently, this system still seems very unstable to me and I want to control code and frameworks by myself. Hence, I also added a minimal Xcode project to provide a framework for iOS. I hope I set the bundle identifier and the project settings correctly. I hope you like the idea of the framework and add it to your repository.

    Thank you for your time and your good work. Kind Regards, Christian

    opened by sundance2000 4
  • Console output is broken

    Console output is broken

    First I installed Alcatraz, went smoothly, then I restarted Xcode. Then, I executed:

        func application(application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
    
            QorumLogs.enabled = true
            QorumLogs.test()
    

    Instead nicely formatted, colorful output I'm getting this in the console:

     g120,120,120;QorumLogs.test()[91]:[; g0,180,180;Debug[;
     g120,120,120;QorumLogs.test()[92]:[; g0,150,0;Info[;
     g120,120,120;QorumLogs.test()[93]:[; g255,190,0;Warning[;
     g120,120,120;QorumLogs.test()[94]:[; g255,0,0;Error[;
    
    opened by r3econ 4
  • Swift 3.0 support

    Swift 3.0 support

    Updated for Swift 3

    opened by jawwad 3
  • Update README to declare Carthage compatibility (+ installations instructions)

    Update README to declare Carthage compatibility (+ installations instructions)

    Here you go 😃

    ⚠️ Carthage automatically fetches the last tagged release when the user doesn't specify a branch or anything else (which is the default case) so the installation instructions don't work without a new release. It would be awesome if you would provide a new release 🚀

    In the meantime you can point Carthage to the latest commit by using

    github "goktugyil/QorumLogs" "master"
    

    Thank you!

    opened by floriankrueger 3
  • Add support for KZLinkedConsole

    Add support for KZLinkedConsole

    opened by konradzdunczyk 3
  • iOS 7.3 compatibility

    iOS 7.3 compatibility

    Is it just me or QorumLogs is not iOS 9.3 ready? Instead of getting colourful output I get white text which looks like this:

    [fg120,120,120;LoginViewController.swift:87 launchApplication():[; g0,150,0;

    I have to admit I just updated my devices and Xcode today..

    opened by staticdreams 3
  • KZLinkedConsole support

    KZLinkedConsole support

    Hi! Install plugin KZLinkedConsole throw Alcatraz. If I set QorumLogs.KZLinkedConsoleSupportEnabled = true, I got error "Type 'QorumLogs' has no member 'KZLinkedConsoleSupportEnabled" What I'm doing wrong ?

    opened by kiokumicu 3
  • Allow to show only logs from an array of files

    Allow to show only logs from an array of files

    Make possible to pass an array of files instead of only one file. I replaced the generic type with Any because it didn't seem to do anything, and it was also causing problems with the array.

    The names have to be passed using either strings or MyType.self. The array doesn't work only with MyType. The old method works normally and it's still possible to pass MyType.

    I also moved classStringWithoutPrefix in the AnyObject block, because there were problems with structs, where the name is not prefixed.

    opened by ivanschuetz 3
  • Please make a note that Xcode 8 doesn't support plugins anymore.

    Please make a note that Xcode 8 doesn't support plugins anymore.

    Please make a note that Xcode 8 doesn't support plugins anymore.

    opened by rlam3 1
  • Added macOS to supported platforms

    Added macOS to supported platforms

    HI,

    I noticed that the framework lacks macOS support and adapted the corresponding file accordingly.

    Regards, Christian

    opened by sundance2000 0
  • Logs on log file

    Logs on log file

    Add a functionality that we can add the logs directly to a text file that can be store in documents directory or cache directory. This file can be used to send report to the developer in case of any issues

    opened by vaibhav-varshaaweblabs 3
  • Not safe to use with Carthage in multiple frameworks

    Not safe to use with Carthage in multiple frameworks

    See title. I've changed the issue as I've moved on from the framework due to lack of support.

    opened by schlingding 0
  • Document the use of emojis in swift 3.0 version

    Document the use of emojis in swift 3.0 version

    enhancement help wanted 
    opened by goktugyil 0
  • QLManager performance issues

    QLManager performance issues

    When you do big loops, like 10k for loops some line in here is lagging the whole code. I think it might be the file extensions.

        for _ in 0..<10000 {
          QL1(11111)
       }
    
    bug 
    opened by goktugyil 2
  • Add support for batch sending logs

    Add support for batch sending logs

    Sending dozens and dozens of logs per session seems like wasted overhead. I'd prefer to store logs throughout the user's session, then send the stored logs in a single request the next time the user foregrounds the app (or possibly attempt to send them when the user backgrounds the app). This would remove the wasted overhead associated with numerous smaller HTTP requests (headers). You would definitely need local persistence of some kind. I'd also like to know that things like logs couldn't potentially be slowing down other HTTP requests that are actually critical - this is particularly a concern on mobile devices in limited bandwidth conditions.

    opened by camclendenin 1
  • Ability to Set Log Levels Per File

    Ability to Set Log Levels Per File

    This can be tagged as a feature request.

    I wrote a wrapper for Qorum that does a few things I wish Qorum did. Perhaps some inspiration can be drawn from it for future changes. For example, setting onlyShowThisFile or minimumLogLevelShown should use the same prefix format for other log events so they can be tracked to a line number.

    https://gist.github.com/semireg/66a127b6ae940984738e84334af84357

    While minimumLogLevelShown is useful, one missing feature is the ability to set different levels for each file. That way, a global can be set such as ERROR and then developers can turn on debugging on a per-file basis.

    Thoughts?

    opened by semireg 1
Owner
Goktug Yilmaz
World-class code copy paster.
Goktug Yilmaz
OS X and iOS application and framework to play with the Apple Push Notification service (APNs)

Pusher OS X and iOS application and framework to play with the Apple Push Notification service (APNs) Installation Install the Mac app using Homebrew

noodlewerk 6.1k Jul 29, 2021
A simple but highly customizable `UICollectionViewLayout` for `UICollectionView`.

CollectionViewPagingLayout Layout Designer SnapshotTransformView ScaleTransformView StackTransformView Custom implementations About This is a simple b

Amir Khorsandi 1.3k Aug 4, 2021
The easiest way to get started with PostgreSQL on the Mac

Postgres.app The easiest way to run PostgreSQL on your Mac Includes everything you need to get started with PostgreSQL Comes with a pretty GUI to star

Postgres.app 5.8k Aug 1, 2021
The Git interface you've been missing all your life has finally arrived.

GitUp Work quickly, safely, and without headaches. The Git interface you've been missing all your life has finally arrived. Git recently celebrated it

GitUp 9.8k Jul 31, 2021
The easiest way to install and switch between multiple versions of Xcode - with a mouse click.

Xcodes.app The easiest way to install and switch between multiple versions of Xcode. If you're looking for a command-line version of Xcodes.app, try x

Robots and Pencils 1.2k Aug 5, 2021
A free, native Apple macOS app for testing HTTP/REST endpoints

About CocoaRestClient is a Mac OS X app for testing HTTP/Restful endpoints. I love curl, but sometimes I need my output XML or JSON pretty printed. I

Mike Mattozzi 2.2k Aug 2, 2021
ColorSet is a macOS utility and framework allowing developers to manage custom interface colors with ease.

ColorSet About ColorSet is a macOS utility and framework allowing developers to manage custom interface colors with ease. Rationale As of macOS 10.14

DigiDNA 126 Aug 5, 2021
MySQL/MariaDB database management for macOS

Sequel Ace Sequel Ace is the "sequel" to longtime macOS tool Sequel Pro. Sequel Ace is a fast, easy-to-use Mac database management application for wor

Sequel-Ace 3.4k Aug 5, 2021
Use the Touch Bar on any Mac

Touch Bar Simulator Use the Touch Bar on any Mac Launch the Touch Bar simulator from anywhere without needing to have Xcode installed, whereas Apple r

Sindre Sorhus 1.5k Aug 4, 2021
The debug application for Apple Push Notification Service (APNs).

Knuff The debug application for Apple Push Notification Service (APNs). Download the latest version Features Send push notifications to APNS (Apple Pu

Knuff 4.9k Jul 29, 2021
A Mac app for checking Xcode projects for unused resources

Unused - Mac App ================ version 1.0 Created by: Jeff Hodnett [email protected] http://www.jeffhodnett.com Use this useful utility tool to

Jeff Hodnett 1.4k Jul 23, 2021
The unofficial WWDC app for macOS

The unofficial WWDC app for macOS Enjoy WWDC from the comfort of your Mac with the unofficial WWDC app for macOS. Whether you're (virtually) attending

Guilherme Rambo 8.1k Jul 31, 2021
GUI image optimizer for Mac

ImageOptim ImageOptim is a GUI for lossless image optimization tools: Zopfli, PNGOUT, OxiPNG, AdvPNG, PNGCrush, JPEGOptim, Jpegtran, Guetzli, Gifsicle

ImageOptim 7.2k Jul 24, 2021
:octocat: Open source github contribution stats on your Mac OS X Menu Bar

gitbar A plugin for BitBar to quickly show your open source GitHub contribution stats and help set contribution goals, all on your Mac OS X Menu Bar.

Dan Cadden 333 Jul 22, 2021