Во-первых, на время вы можете получить текущие часы и минуты в виде строки:
func printTime()->String{
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute, fromDate: date)
let hour = components.hour
let minutes = components.minute
return "\(hour):\(minutes)"
}
И для функции и т.д. Вы можете использовать Swift Literal Expressions__FILE__
, __FUNCTION__
и __LINE__
.
Но вы не хотите устанавливать его каждый раз, когда вы хотите регистрироваться. Таким образом, вы могли бы сделать что-то вроде этого:
func prettyPrint(print: String, file:String = __FILE__, functionName: String = __FUNCTION__, line:Int = __LINE__) {
println("\(printTime()) \(file) > \(functionName) [line \(line)] \(print)")
}
Вы называете prettyPrint
так:
prettyPrint("hey")
И вы получите следующий результат:
/Path/To/Your/File/MyClass.swift > hello [line 81] hey
Но, как вы хотите, только имя вашего класса, вы можете удалить путь со следующей функцией:
func getFile(path:String = __FILE__)->String{
var parts = path.componentsSeparatedByString("/")
return parts[parts.count-1]
}
Или, как ChikabuZ говорил в своем ответе вы можете непосредственно проверить класс:
let className = NSStringFromClass(self.classForCoder).pathExtension
Окончательная функция
А вот конечная функция (ы):
func getFile(path:String = __FILE__)->String{
var parts = path.componentsSeparatedByString("/")
return parts[parts.count-1]
}
func prettyPrint(print: String, functionName: String = __FUNCTION__, line:Int = __LINE__) {
println("\(printTime()) \(getFile()) > \(functionName) [line \(line)] \(print)")
}
func printTime()->String{
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute, fromDate: date)
let hour = components.hour
let minutes = components.minute
return "\(hour):\(minutes)"
}
И результатом будет:
MyClass.swift > hello [line 81] hey
Вы также должны отметить ответ @ emaloney на этот вопрос. В частности, что
Решения на основе решений приводят к тому, что выходные данные записываются в Системный журнал (ASL).
В идеале переход к NSLog или полномасштабная система регистрации
Вы можете проверить этот код библиотеки https://github.com/goktugyil/QorumLogs – Thellimist