Formatter.swift 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Software License Agreement (BSD License)
  2. //
  3. // Copyright (c) 2010-2025, Deusty, LLC
  4. // All rights reserved.
  5. //
  6. // Redistribution and use of this software in source and binary forms,
  7. // with or without modification, are permitted provided that the following conditions are met:
  8. //
  9. // * Redistributions of source code must retain the above copyright notice,
  10. // this list of conditions and the following disclaimer.
  11. //
  12. // * Neither the name of Deusty nor the names of its contributors may be used
  13. // to endorse or promote products derived from this software without specific
  14. // prior written permission of Deusty, LLC.
  15. import Foundation
  16. import CocoaLumberjackSwift
  17. final class Formatter: DDDispatchQueueLogFormatter {
  18. let threadUnsafeDateFormatter: DateFormatter
  19. override init() {
  20. threadUnsafeDateFormatter = DateFormatter()
  21. threadUnsafeDateFormatter.formatterBehavior = .behavior10_4
  22. threadUnsafeDateFormatter.dateFormat = "HH:mm:ss.SSS"
  23. super.init()
  24. }
  25. override func format(message logMessage: DDLogMessage) -> String {
  26. let dateAndTime = threadUnsafeDateFormatter.string(from: logMessage.timestamp)
  27. let logLevel: String
  28. let logFlag = logMessage.flag
  29. if logFlag.contains(.error) {
  30. logLevel = "E"
  31. } else if logFlag.contains(.warning) {
  32. logLevel = "W"
  33. } else if logFlag.contains(.info) {
  34. logLevel = "I"
  35. } else if logFlag.contains(.debug) {
  36. logLevel = "D"
  37. } else if logFlag.contains(.verbose) {
  38. logLevel = "V"
  39. } else {
  40. logLevel = "?"
  41. }
  42. return "\(dateAndTime) |\(logLevel)| [\(logMessage.fileName) \(logMessage.function ?? "nil")] #\(logMessage.line): \(logMessage.message)"
  43. }
  44. }