IOS CocoaLumberjack 日志 Swift

2020-03-31  本文已影响0人  假装门口当前台

今天想要保存ios日志,存储到本地,后续方面追踪
网上看到有两种方式
第一种是直接冲定位NSLog中的日志位置,这种简单,但是功能少,需要自己处理文件

    private func redirectNSlogToDocumentFolder() {
        let documentDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
        let dateFormat = DateFormatter()
        dateFormat.dateFormat = "yyyy-MM-dd"
        let fileName = String(format: "Log-%@.txt", dateFormat.string(from: Date()))
        let logfilePath = documentDirectory + "/" + fileName;
        
        let content = try? String.init(contentsOfFile: logfilePath) 
        freopen(logfilePath.cString(using: .ascii), "a+", stdout)
        freopen(logfilePath.cString(using: .ascii), "a+", stderr)
    }

接着找到了一个第三方库CocoaLumberjack,这个库很强大,支持oc和swift,
先看看这个库的UML图


CocoaLumberjack UML图 是不是很吊呢

但是我用swift一直启动就崩溃,后面找出原因,调用内联函数就crash,集成步骤如下

采用pod集成方式,用的是swift

pod 'CocoaLumberjack/Swift'

然后终端调用install下载

pod install

然后就开始使用了,swift 和oc差别就是多了这几个文件



这里面主要是定义一些内联函数,优化日志输出,方便代码编写,也就是下面的打印日志函数

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.

        DDLog.add(DDOSLogger.sharedInstance)
        DDLog.add(DDTTYLogger.sharedInstance!)
        DDTTYLogger.sharedInstance?.colorsEnabled = true
        
        let fileLogger = DDFileLogger.init()
        fileLogger.rollingFrequency = 60 * 60 * 24
        fileLogger.logFileManager.maximumNumberOfLogFiles = 7
        DDLog.add(fileLogger)

  // 运行就死在这里
      DDLogVerbose("Verbose"); 
        DDLogDebug("Debug");
        DDLogInfo("Info");
        DDLogWarn("Warn");
        DDLogError("Error");
}

尝试了好久,到上面那句打印日志就crash,后面发现,感觉就是调用的那句没有找到,由于是pod继承,猜想可能是这个CocoaLumberjack.swift没有被工程引入,果断把这个文件拷贝放到工程目录下,然后在运行,完美大吉。

上一篇下一篇

猜你喜欢

热点阅读