Giter Site home page Giter Site logo

qorumlogs's Introduction

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

qorumlogs's People

Contributors

bcylin avatar bryant1410 avatar ehlersd avatar esqarrouth avatar ivanbruel avatar ivnsch avatar jawwad avatar konradzdunczyk avatar odemolliens avatar peiman avatar staticdreams avatar sundance2000 avatar thellimist avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qorumlogs's Issues

Warning

There is warning about unused result of initializer

screen shot 2015-10-21 at 10 15 45

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():�[; �[fg0,150,0;

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

Xcode 8 support

Hello! Thanks your great job to make my coding life colourful. I am trying my project with Xcode 8 now. Is there any plan to support Xcode 8 with coloured logging?

How to create global QorumLogs

QorumLogs.enabled = false // This should be disabled for OnlineLogs to work

where do i need put this for global use ?

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)
   }

Does logs work for new google forms ?

I used ids from this field:
<input type="hidden" jsname="L9xHkb" name="entry.2089538913">

screen shot 2016-03-08 at 21 57 18

 �[fg160,32,240;OnlineLogs: [:] - v1.0(1.4) - 1Debug - QorumLogs.test()[111] - Debug�[;
 �[fg160,32,240;OnlineLogs: [:] - v1.0(1.4) - 2Info - QorumLogs.test()[112] - Info�[;
 �[fg160,32,240;OnlineLogs: [:] - v1.0(1.4) - 3Warning - QorumLogs.test()[113] - Warning�[;
 �[fg160,32,240;OnlineLogs: [:] - v1.0(1.4) - 4Error - QorumLogs.test()[114] - Error�[;
    QorumOnlineLogs.test() 

is working but QL2("Start:") not

Error post cocapods installtion

Hey,

I have been trying to use QorumLogs for a project of mine and I installed using cocoapods(0.39.0).
After install when I try to build the project I get following errors.

screen shot 2016-05-12 at 3 47 11 pm

Following are the content of my cocoapods file

target 'MyApp' do
  source 'https://github.com/CocoaPods/Specs.git'
  platform :ios, '8.0'
  use_frameworks!
  pod 'Alamofire', '~> 3.1.3'
  pod 'SwiftyJSON', :git => 'https://github.com/SwiftyJSON/SwiftyJSON.git'
  pod 'QorumLogs'
end

I am really sorry if its a basic issue I am new to iOS development

Swift3.0 support

Hi,
I am very like this framework.But now out projects already converted to swift3.0 with Xcode8, so we can not use it.Can you make the framework to support swift3.0 or create a swift3.0 beta branch.
Thanks.

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

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:

 �[fg120,120,120;QorumLogs.test()[91]:�[; �[fg0,180,180;Debug�[;
 �[fg120,120,120;QorumLogs.test()[92]:�[; �[fg0,150,0;Info�[;
 �[fg120,120,120;QorumLogs.test()[93]:�[; �[fg255,190,0;Warning�[;
 �[fg120,120,120;QorumLogs.test()[94]:�[; �[fg255,0,0;Error�[;

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?

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.

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 ?

Print logs only in Debug mode

I am working on an application which needs to spit logs only when application is run in the debug mode and want to eliminate any logs when in release. Is it possible to customize that way. Even better, for every log I am trying to print, is it possible to specify if I want to print that log in release or not?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.