Created
June 1, 2016 11:47
-
-
Save bpoplauschi/4856ac999d6cc8fe419b158dcc67ff91 to your computer and use it in GitHub Desktop.
Lumberjack Custom LogFormatter
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class CustomLogFormatter: DDDispatchQueueLogFormatter { | |
// MARK: Constants | |
static let kShortDateFormat = "HH:mm:ss.SSS" | |
static let kLongDateFormat = "yyyy-MM-dd HH:mm:ss.SSS" | |
let loggerType: LoggerType | |
let threadUnsafeDateFormatter: NSDateFormatter | |
public init(loggerType: LoggerType) { | |
self.loggerType = loggerType | |
self.threadUnsafeDateFormatter = NSDateFormatter() | |
super.init() | |
configureDateFormatter(self.threadUnsafeDateFormatter) | |
} | |
override public func configureDateFormatter(dateFormatter: NSDateFormatter!) { | |
dateFormatter.formatterBehavior = .BehaviorDefault | |
dateFormatter.dateFormat = (self.loggerType == .TTY) ? CustomLogFormatter.kShortDateFormat: CustomLogFormatter.kLongDateFormat | |
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") | |
dateFormatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian) | |
} | |
override public func stringFromDate(date: NSDate!) -> String! { | |
return threadUnsafeDateFormatter.stringFromDate(date) | |
} | |
override public func formatLogMessage(logMessage: DDLogMessage!) -> String! { | |
let dateAndTime = self.stringFromDate(logMessage.timestamp) | |
let logLevelLetter: String | |
switch logMessage.flag { | |
case DDLogFlag.Error: logLevelLetter = "E" | |
case DDLogFlag.Warning: logLevelLetter = "W" | |
case DDLogFlag.Info: logLevelLetter = "I" | |
case DDLogFlag.Debug: logLevelLetter = "D" | |
case DDLogFlag.Verbose: logLevelLetter = "V" | |
default: logLevelLetter = "?" | |
} | |
let queueThreadLabel = self.queueThreadLabelForLogMessage(logMessage) | |
let formatterLogString: String | |
switch self.loggerType { | |
case .TTY, .File: | |
formatterLogString = "\(dateAndTime) [\(queueThreadLabel)] |\(logLevelLetter)| [\(logMessage.fileName) \(logMessage.function)]#\(logMessage.line): \(logMessage.message)" | |
case .ASL: | |
formatterLogString = "[\(queueThreadLabel)] |\(logLevelLetter)| \(logMessage.fileName): \(logMessage.message)" | |
case .Crashlytics: | |
formatterLogString = "|\(logLevelLetter)| [\(queueThreadLabel)] [\(logMessage.fileName) \(logMessage.function)]#\(logMessage.line): \(logMessage.message)" | |
} | |
return formatterLogString | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment