Swift中的CocoaLumberjack,如何打印行号和filne名称 [英] CocoaLumberjack in Swift, how to print line number and filne name
问题描述
我是CocoaLumberjack的新手,我在这个之后让它在Swift上工作。如果我尝试打印日志:
I'm new to CocoaLumberjack and I get it to work on Swift following this. If I try to print logs doing:
DDLogDebug("Debug")
DDLogInfo("Info")
DDLogWarn("Warning")
DDLogVerbose("Verbose")
DDLogError("Error")
一切正常,我得到了所有级别,因为我的 defaultDebugLevel
是DDLogLevel.Verbose。
Everything works fine and I get all the levels printed as my defaultDebugLevel
is DDLogLevel.Verbose.
但是我找不到/找出如何用日志打印行或文件名。不知道吗?
But I can't find/find out how to print the line or the filename with the log. Any idea?
非常感谢!!
推荐答案
更多的研究我发现你必须创建一个日志格式化程序,这个日志格式化程序是 DDDispatchQueueLogFormatter
的子类,你必须覆盖一个接收的函数DDLogMessage
并返回字符串
,例如:
After some more research I found that you have to create a log formatter, this log formatter is a subclass of DDDispatchQueueLogFormatter
and you have to override a function that receives a DDLogMessage
and returns a String
, for example:
import Foundation
import CocoaLumberjack.DDDispatchQueueLogFormatter
class LogFormatter: DDDispatchQueueLogFormatter {
let dateFormatter: NSDateFormatter
override init() {
dateFormatter = NSDateFormatter()
dateFormatter.formatterBehavior = .Behavior10_4
dateFormatter.dateFormat = "HH:mm"
super.init()
}
override func formatLogMessage(logMessage: DDLogMessage!) -> String {
let dateAndTime = dateFormatter.stringFromDate(logMessage.timestamp)
return "\(dateAndTime) [\(logMessage.fileName):\(logMessage.line)]: \(logMessage.message)"
}
}
然后你只需添加你的你的AppDelegate中的格式化程序或者你设置CocaLumberJack的地方:
Then you just have to add your formatter like this in your AppDelegate or wherever you are setting CocaLumberJack:
DDTTYLogger.sharedInstance().logFormatter = LogFormatter()
希望有人帮忙!
这篇关于Swift中的CocoaLumberjack,如何打印行号和filne名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!