ios - Swift 中的 CocoaLumberjack,如何打印行号和文件名

标签 ios swift cocoalumberjack

我是 CocoaLumberjack 的新手,我在 this 之后让它在 Swift 上工作.如果我尝试打印日志:

DDLogDebug("Debug")
DDLogInfo("Info")
DDLogWarn("Warning")
DDLogVerbose("Verbose")
DDLogError("Error")

一切正常,我打印了所有级别,因为我的 defaultDebugLevel 是 DDLogLevel.Verbose。

但我无法找到/找出如何使用日志打印行或文件名。有什么想法吗?

非常感谢!!

最佳答案

经过更多研究,我发现您必须创建一个日志格式化程序,这个日志格式化程序是 DDDispatchQueueLogFormatter 的子类,您必须重写一个接收 DDLogMessage 的函数> 并返回一个 String,例如:

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 的地方添加你的格式化程序:

DDTTYLogger.sharedInstance().logFormatter = LogFormatter()

希望对大家有帮助!

关于ios - Swift 中的 CocoaLumberjack,如何打印行号和文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31415913/

相关文章:

ios - 如何为 iOS 应用程序集成 eSewa 支付网关?

string - 如何检查一个字符是否是 Swift 中的空格字符?

iphone - 当 UIView 添加到它的父 View 时,它如何获得回调?

iOS 11 tableView Header 中的搜索栏在焦点上跳转到屏幕顶部

ios - 通过长按手势交换 UICollectionViewCells 位置

swift - Swift 中使用 View 的 LED 横幅

ios - Xcode 10.1 归档时不显示 'distribute app' 选项,无法归档

ios - Lumberjack 日志 DDLogInfo 在控制台中显示为警告

ios - iOS 8 应用程序/框架中缺少必需的模块 'CocoaLumberjack'

ios - 其他库中的 CocoaLumberjack 和 NSLog