Swift中的CocoaLumberjack,如何打印行号和filne名称 [英] CocoaLumberjack in Swift, how to print line number and filne name

查看:940
本文介绍了Swift中的CocoaLumberjack,如何打印行号和filne名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆