mirror of
https://github.com/confirmedcode/Lockdown-iOS.git
synced 2025-12-21 12:14:02 +01:00
96 lines
2.9 KiB
Swift
96 lines
2.9 KiB
Swift
//
|
|
// LocalLogger.swift
|
|
//
|
|
// Format logs in CococaLumberjack
|
|
//
|
|
//
|
|
|
|
import Foundation
|
|
import CocoaLumberjackSwift
|
|
|
|
var logFileDataArray: [NSData] {
|
|
get {
|
|
let logFilePaths = fileLogger.logFileManager.sortedLogFilePaths as [String]
|
|
var logFileDataArray = [NSData]()
|
|
for logFilePath in logFilePaths {
|
|
let fileURL = NSURL(fileURLWithPath: logFilePath)
|
|
if let logFileData = try? NSData(contentsOf: fileURL as URL, options: NSData.ReadingOptions.mappedIfSafe) {
|
|
// Insert at front to reverse the order, so that oldest logs appear first.
|
|
logFileDataArray.insert(logFileData, at: 0)
|
|
}
|
|
}
|
|
return logFileDataArray
|
|
}
|
|
}
|
|
|
|
func setupLocalLogger() {
|
|
DDLog.add(DDOSLogger.sharedInstance)
|
|
DDOSLogger.sharedInstance.logFormatter = LogFormatter()
|
|
|
|
fileLogger.rollingFrequency = TimeInterval(60*60*24) // 24 hours
|
|
fileLogger.logFileManager.maximumNumberOfLogFiles = 7
|
|
fileLogger.logFormatter = LogFormatter()
|
|
DDLog.add(fileLogger)
|
|
writeCommonInfoToLog()
|
|
}
|
|
|
|
func writeCommonInfoToLog() {
|
|
let nsObject: String? = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as? String
|
|
let systemVersion = UIDevice.current.systemVersion
|
|
let accessLevel = accessLevel()
|
|
DDLogInfo("")
|
|
DDLogInfo("")
|
|
DDLogInfo("************************************************")
|
|
DDLogInfo("Lockdown iOS: v" + nsObject!)
|
|
DDLogInfo("iOS version: " + systemVersion)
|
|
DDLogInfo("Device model: " + UIDevice.current.modelName)
|
|
DDLogInfo("Access level: " + accessLevel)
|
|
DDLogInfo("************************************************")
|
|
}
|
|
|
|
fileprivate func accessLevel() -> String {
|
|
if UserDefaults.hasSeenUniversalPaywall {
|
|
return "Universal"
|
|
} else if UserDefaults.hasSeenAnonymousPaywall {
|
|
return "Anonymous"
|
|
} else if UserDefaults.hasSeenAdvancedPaywall {
|
|
return "Advanced"
|
|
} else {
|
|
return "Basic"
|
|
}
|
|
}
|
|
|
|
class LogFormatter: DDDispatchQueueLogFormatter {
|
|
let dateFormatter: DateFormatter
|
|
|
|
override init() {
|
|
dateFormatter = DateFormatter()
|
|
dateFormatter.formatterBehavior = .behavior10_4
|
|
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
|
|
|
|
super.init()
|
|
}
|
|
|
|
override func format(message logMessage: DDLogMessage) -> String {
|
|
let dateAndTime = dateFormatter.string(from: logMessage.timestamp)
|
|
|
|
var logType = "LOG"
|
|
switch logMessage.level {
|
|
case .debug:
|
|
logType = "DEBUG"
|
|
case .error:
|
|
logType = "ERROR"
|
|
case .info:
|
|
logType = "INFO"
|
|
case .verbose:
|
|
logType = "VERBOSE"
|
|
case .warning:
|
|
logType = "WARNING"
|
|
default:
|
|
logType = "LOG"
|
|
}
|
|
|
|
return "\(logType): \(dateAndTime) [\(logMessage.fileName):\(logMessage.line)]: \(logMessage.message)"
|
|
}
|
|
}
|