O2Logger.swift 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. //
  2. // O2Logger.swift
  3. //
  4. //
  5. // Created by 刘振兴 on 2017/6/2.
  6. //
  7. //
  8. import Foundation
  9. import CocoaLumberjack
  10. //设置日志级别
  11. public let ddLogLevel:DDLogLevel = DDLogLevel.debug;
  12. class O2Logger {
  13. private static var fileLogger:DDFileLogger {
  14. var logFilePath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first
  15. logFilePath?.append("/logs")
  16. let fileManager = DDLogFileManagerDefault(logsDirectory: logFilePath)
  17. let ddFileLogger = DDFileLogger(logFileManager: fileManager)
  18. ddFileLogger?.logFormatter = O2LoggerFormatter()
  19. return ddFileLogger!
  20. }
  21. public static func startLogManager() {
  22. DDTTYLogger.sharedInstance.colorsEnabled = true
  23. DDTTYLogger.sharedInstance.logFormatter = O2LoggerFormatter()
  24. //加入到console
  25. DDLog.add(DDTTYLogger.sharedInstance)
  26. //加入到Apple Log System
  27. //DDLog.add(DDASLLogger.sharedInstance)
  28. //加入到自定义文件
  29. //let fileLogger:DDFileLogger = DDFileLogger()
  30. fileLogger.rollingFrequency = TimeInterval(60*60*24)
  31. fileLogger.logFileManager.maximumNumberOfLogFiles = 7
  32. DDLog.add(fileLogger)
  33. DDLogInfo("DDLog is configuration")
  34. }
  35. public static func getLogFiles() -> [O2LogFileInfo] {
  36. //fileLogger.logFileManager.sortedLogFileInfos
  37. var o2LogFiles:[O2LogFileInfo] = []
  38. if let fileInfos = fileLogger.logFileManager.sortedLogFileInfos {
  39. for fileInfo in fileInfos {
  40. DDLogDebug(fileInfo.filePath)
  41. let logFile = O2LogFileInfo(filePath: fileInfo.filePath, fileName: fileInfo.fileName, creationDate: fileInfo.creationDate, modificationDate: fileInfo.modificationDate, fileSize: fileInfo.fileSize, age: fileInfo.age, isArchived: fileInfo.isArchived)
  42. o2LogFiles.append(logFile)
  43. }
  44. }
  45. return o2LogFiles
  46. }
  47. public static func debug(_ message:String){
  48. DDLogDebug(message)
  49. }
  50. public static func info(_ message:String){
  51. DDLogInfo(message)
  52. }
  53. public static func warn(_ message:String){
  54. DDLogWarn(message)
  55. }
  56. public static func error(_ message:String){
  57. DDLogError(message)
  58. }
  59. }
  60. class O2LoggerFormatter: NSObject,DDLogFormatter {
  61. func format(message logMessage: DDLogMessage) -> String? {
  62. //Level
  63. var level:String = "U"
  64. switch logMessage.flag {
  65. case DDLogFlag.error:
  66. level = "E"
  67. break
  68. case DDLogFlag.warning:
  69. level = "W"
  70. break
  71. case DDLogFlag.info:
  72. level = "I"
  73. break
  74. case DDLogFlag.debug:
  75. level = "D"
  76. break
  77. case DDLogFlag.verbose:
  78. level = "V"
  79. break
  80. default:
  81. level = "U"
  82. }
  83. //fileName
  84. let fileName = URL(fileURLWithPath: logMessage.file).lastPathComponent
  85. // function
  86. let fc = logMessage.function ?? ""
  87. //line
  88. let lineNumber = String(logMessage.line)
  89. //time
  90. let dateAndTime = logMessage.timestamp.toString(format: "yyyy-MM-dd HH:mm:ss")
  91. //msg
  92. let msg = logMessage.message
  93. return "\(dateAndTime) \(fileName) \(fc) \(lineNumber) \(level) \(msg)"
  94. }
  95. }
  96. struct O2LogFileInfo {
  97. var filePath: String!
  98. var fileName: String!
  99. var creationDate: Date!
  100. var modificationDate: Date!
  101. var fileSize: UInt64!
  102. var age: TimeInterval!
  103. var isArchived: Bool!
  104. var friendFileName:String {
  105. let comps = fileName.split(" ")
  106. if comps.count > 2 {
  107. return "\(comps[1])_\(comps[2])"
  108. }else{
  109. return fileName
  110. }
  111. }
  112. // init(_ filePath:String,_ fileName:String,creationDate:Date,_ modificationDate:Date,_ fileSize:UInt64,_ age:TimeInterval,_ isArchived:Bool) {
  113. // self.filePath = filePath
  114. // self.fileName = fileName
  115. // self.creationDate = creationDate
  116. // self.modificationDate = modificationDate
  117. // self.fileSize = fileSize
  118. // self.age = age
  119. // self.isArchived = isArchived
  120. // }
  121. }