static var isDebug: Bool = false
fileprivate static let shared = Logger()
- private init() { }
+ private var fileHandle:FileHandle?
+ private init() {
+ let path = getPath()
+ fileHandle = FileHandle(forWritingAtPath: path)!
+// fileHandle?.seekToEndOfFile()
+ }
fileprivate var dateString: String { Date().format(.full) }
static var logs: [String] = []
+
+
+ private func getPath()->String{
+// let path = NSHomeDirectory() + "/Documents/IOTBluetooth/" + "\(Date().format(.middle)).log"
+ let foldPath = NSHomeDirectory() + "/Documents/IOTBluetooth/"
+ let fileManager = FileManager.default
+ if !fileManager.fileExists(atPath: foldPath) {
+ do {
+ try FileManager.default.createDirectory(atPath: foldPath, withIntermediateDirectories: true, attributes: nil)
+ } catch {
+ return ""
+ }
+ }
+ let path = foldPath + "\(Date().format(.long2)).log"
+ if !FileManager.default.fileExists(atPath: path) {
+ FileManager.default.createFile(atPath: path, contents: nil, attributes: nil)
+ }
+ return path
+ }
}
extension Logger {
print(logs, separator: separator, terminator: terminator)
let logString = Logger.shared.dateString + " [IOTBluetooth-\(String(format: "%03d", line))]: " + logs.map({ "\($0)" }).joined(separator: separator) + terminator
Self.logs.append(logString)
+ Logger.shared.saveLog(log: logString)
}
objc_sync_exit(Logger.shared)
+
+
+ }
+
+ private func saveLog(log:String){
+ fileHandle?.write(log.data(using: .utf8)!)
+// if #available(iOS 13.0, *) {
+// try? fileHandle.close()
+// } else {
+// // Fallback on earlier versions
+// }
}
}