gpt4 book ai didi

Swift:格式化控制台日志

转载 作者:搜寻专家 更新时间:2023-10-31 19:31:23 31 4
gpt4 key购买 nike

是否有可能创建自定义日志功能?

这是默认的 println("hello world") 的样子:

2015-03-04 18:33:55.788 MyApp[12345:671253923] Hello World 

我想输出这样的东西:

18:33 MyClass > myFunc [line 1] Hello World 

最佳答案

首先,对于时间,你可以得到当前的小时和分钟作为String:

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在他的回答中提到你可以直接查看类(class):

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 对这个问题的回答。具体来说

println()-based solutions result in output being captured by the Apple System Log (ASL).

理想情况下切换到 NSLog 或一个完整的日志系统

关于Swift:格式化控制台日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28864943/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com