NXLoggerManager.swift 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. //
  2. // NXLoggerManager.swift
  3. // NXFramework-Swift-Demo
  4. //
  5. // Created by ak on 2020/10/26.
  6. // Copyright © 2020 NXFramework-Swift. All rights reserved.
  7. //
  8. import UIKit
  9. extension UIWindow {
  10. open override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
  11. guard NXLogger.shared.level != .none else { return }
  12. guard NXLogger.shared.ouput == .debugerConsoleAndFile
  13. || NXLogger.shared.ouput == .deviceConsoleAndFile
  14. || NXLogger.shared.ouput == .fileOnly else { return }
  15. NXLogger.shared.saveAsync()
  16. let manager = LoggerManager()
  17. manager.show()
  18. }
  19. }
  20. protocol LoggerAction {
  21. func removeAll()
  22. }
  23. class LoggerManager: NSObject {
  24. let controller = NXLoggerVC()
  25. public func show() {
  26. guard let topViewController = UIApplication.topViewController() else { return }
  27. guard topViewController .isKind(of: NXLoggerVC.self) == false else { return }
  28. controller.data = " \(loadLog())\(deviceInfo())"
  29. controller.delegate = self
  30. topViewController.present(controller, animated: true, completion: nil)
  31. }
  32. private func loadLog() -> String {
  33. var texts: [String] = []
  34. guard let data = NXLogger.shared.load() else { return "" }
  35. data.forEach { (string) in
  36. texts.append("<pre style=\"line-height:8px;\">\(string)</pre>")
  37. }
  38. return texts.joined()
  39. }
  40. private func deviceInfo() -> String {
  41. var texts:[String] = []
  42. texts.append("<pre style=\"line-height:8px;\">==============================================</pre>")
  43. NXDeviceManager.info().forEach { (string) in
  44. texts.append("<pre style=\"line-height:8px;\">\(string)</pre>")
  45. }
  46. return texts.joined()
  47. }
  48. }
  49. extension LoggerManager: LoggerAction {
  50. func removeAll() {
  51. NXLogger.shared.removeAllAsync()
  52. controller.data = deviceInfo()
  53. }
  54. }