 }
 
 
+// Stores logs on the device's file system
+// This protocol is implemented in the BMSAnalytics framework
+public protocol LogSaverProtocol {
+    
+    func logMessageToFile(message: String, level: LogLevel, loggerName: String, calledFile: String, calledFunction: String, calledLineNumber: Int, additionalMetadata: [String: AnyObject]?)
+}
+
+
 // TODO: Documentation
 /**
-    Logger
- */
+Logger
+*/
 public class Logger {
-
+    
     
     // MARK: Properties (API)
     

    // MARK: Log methods (API)
    
    /**
     Log at the Debug LogLevel.
     
     - parameter message: The message to log
     
     - Note: Do not supply values for the `file`, `function`, or `line` parameters. These parameters take default values to automatically record the file, function, and line in which this method was called.
     */
    public func debug(message: String, file: String = __FILE__, function: String = __FUNCTION__, line: Int = __LINE__) {
        
        logMessage(message, level: LogLevel.Debug, calledFile: file, calledFunction: function, calledLineNumber: line)

        logMessage(message, level: LogLevel.Fatal, calledFile: file, calledFunction: function, calledLineNumber: line)
    }
    
    
    
    // MARK: Logging implementation
    
    // This is the master function that handles all of the logging, including level checking, printing to console, and writing to file
    // All other log functions below this one are helpers for this function
    public func logMessage(message: String, level: LogLevel, calledFile: String, calledFunction: String, calledLineNumber: Int, additionalMetadata: [String: AnyObject]? = nil) {
