Source code for the WriteFreely SwiftUI app for iOS, iPadOS, and macOS
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 

51 satır
1.3 KiB

  1. //
  2. // Logging.swift
  3. // WriteFreely-MultiPlatform
  4. //
  5. // Created by Angelo Stavrow on 2022-06-25.
  6. //
  7. import Foundation
  8. import os
  9. import OSLog
  10. protocol LogWriter {
  11. func log(_ message: String, withSensitiveInfo privateInfo: String?, level: OSLogType)
  12. func logCrashAndSetFlag(error: Error)
  13. }
  14. final class Logging {
  15. private let logger: Logger
  16. private let subsystem = Bundle.main.bundleIdentifier!
  17. init(for category: String = "") {
  18. self.logger = Logger(subsystem: subsystem, category: category)
  19. }
  20. }
  21. extension Logging: LogWriter {
  22. func log(
  23. _ message: String,
  24. withSensitiveInfo privateInfo: String? = nil,
  25. level: OSLogType = .default
  26. ) {
  27. if let privateInfo = privateInfo {
  28. logger.log(level: level, "\(message): \(privateInfo, privacy: .sensitive)")
  29. } else {
  30. logger.log(level: level, "\(message)")
  31. }
  32. }
  33. func logCrashAndSetFlag(error: Error) {
  34. let errorDescription = error.localizedDescription
  35. UserDefaults.shared.set(true, forKey: WFDefaults.didHaveFatalError)
  36. UserDefaults.shared.set(errorDescription, forKey: WFDefaults.fatalErrorDescription)
  37. logger.log(level: .error, "\(errorDescription)")
  38. fatalError(errorDescription)
  39. }
  40. }