         #endif
     }
    
-    private class func log(level: LogLevel, message: String, file: String, function: String, line: Int) {
-        println("\(logLevelName(level)): \(file.lastPathComponent): \(function)[\(line)]: \(message)")
+    private class func log<T>(level: Level, message: T, file: String, function: String, line: Int) {
+        println("\(Static.dateFormatter.stringFromDate(NSDate())): \(logLevelName(level)): \(file.lastPathComponent): \(function)[\(line)]: \(message)")
     }
+    
+    // MARK: - Swift Log methods
+    
+    class func debug<T>(message: T, file: String = __FILE__, function: String = __FUNCTION__, line: Int = __LINE__) {
+        log(.Debug, message: message, file: file, function: function, line: line);
+    }
+    
+    class func info<T>(message: T, file: String = __FILE__, function: String = __FUNCTION__, line: Int = __LINE__) {
+        log(.Info, message: message, file: file, function: function, line: line);
+    }
+    
+    class func warning<T>(message: T, file: String = __FILE__, function: String = __FUNCTION__, line: Int = __LINE__) {
+        log(.Warning, message: message, file: file, function: function, line: line);
+    }
+    
+    class func error<T>(message: T, file: String = __FILE__, function: String = __FUNCTION__, line: Int = __LINE__)  {
+        log(.Error, message: message, file: file, function: function, line: line);
+    }
+    
+    // MARK: - Obj-C Log methods
     
     class func logD(message: String, file: String = __FILE__, function: String = __FUNCTION__, line: Int = __LINE__) {
         log(.Debug, message: message, file: file, function: function, line: line);

@objc
class Logger {

    private enum LogLevel {
        case Info
        case Debug
        case Warning
        case Error
    }
    
    private class func logLevelName(level: LogLevel) -> String {
        switch(level) {
        case .Info:
            return "INFO"

        }
    }
    
    private class func releaseLogLevel() -> Level {
        return .Error;
    }
    
    private class func logLevelAllowed(level: Level) -> Bool {
        #if DEBUG
            return true
        #else
