Skip to content

Instantly share code, notes, and snippets.

@danielsanfr
Last active February 4, 2020 21:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danielsanfr/4460829c76c99fd0c2fc3528018e2e91 to your computer and use it in GitHub Desktop.
Save danielsanfr/4460829c76c99fd0c2fc3528018e2e91 to your computer and use it in GitHub Desktop.
A simple struct for printing logs in a more "Android" way. Print time, file, line and function name, plus desired message.
/**
* Log.swift
* Copyright (c) 2020 Daniel San <daniel.samrocha@gmail.com>
* Created by Daniel San on 17/01/2020.
*/
import Foundation
struct Log {
private init() { /* No instance */ }
public static func a(_ message: String, file: String = #file, function: String = #function, line: Int = #line, column: Int = #column) {
printLog(message: message, logLevel: "πŸ’™ A", file: file, function: function, line: line, column: column)
}
public static func e(_ message: String, file: String = #file, function: String = #function, line: Int = #line, column: Int = #column) {
printLog(message: message, logLevel: "❀️ E", file: file, function: function, line: line, column: column)
}
public static func w(_ message: String, file: String = #file, function: String = #function, line: Int = #line, column: Int = #column) {
printLog(message: message, logLevel: "πŸ’› W", file: file, function: function, line: line, column: column)
}
public static func i(_ message: String, file: String = #file, function: String = #function, line: Int = #line, column: Int = #column) {
printLog(message: message, logLevel: "πŸ’™ I", file: file, function: function, line: line, column: column)
}
public static func d(_ message: String, file: String = #file, function: String = #function, line: Int = #line, column: Int = #column) {
printLog(message: message, logLevel: "πŸ’š D", file: file, function: function, line: line, column: column)
}
public static func v(_ message: String, file: String = #file, function: String = #function, line: Int = #line, column: Int = #column) {
printLog(message: message, logLevel: "πŸ’œ V", file: file, function: function, line: line, column: column)
}
public static func wtf(_ message: String, file: String = #file, function: String = #function, line: Int = #line, column: Int = #column) {
printLog(message: message, logLevel: "πŸ’” WTF", file: file, function: function, line: line, column: column)
}
private static func printLog(message: String, logLevel: String, file: String, function: String, line: Int, column: Int) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSS"
print("\(dateFormatter.string(from: Date()))/\(logLevel)/\(formatFile(file)):\(line)#\(function): \(message)")
}
private static func formatFile(_ file: String) -> String {
let startIndex = file.index(after: file.lastIndex(of: "/")!)
let endIndex = file.lastIndex(of: ".")!
return String(file[startIndex..<endIndex])
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment