CocoaLumberjack with Swift - Calling preprocessor macros CocoaLumberjack with Swift - Calling preprocessor macros swift swift

CocoaLumberjack with Swift - Calling preprocessor macros


Okay, I just found a solution. Writing an Objective-C Wrapper class calling the preprocessors and offering methods to call it.

Hopefully this will help other people facing the same issues.

I first created a header file:

@interface DDLogWrapper : NSObject+ (void) logVerbose:(NSString *)message;+ (void) logError:(NSString *)message;+ (void) logInfo:(NSString *)message;@end

With the corresponding implementation:

#import <Foundation/Foundation.h>#import "DDLogWrapper.h"// Logging Framework Lumberjack#import "DDLog.h"#import "DDASLLogger.h"#import "DDTTYLogger.h"// Definition of the current log level#ifdef DEBUGstatic const int ddLogLevel = LOG_LEVEL_VERBOSE;#elsestatic const int ddLogLevel = LOG_LEVEL_ERROR;#endif@implementation DDLogWrapper+ (void) logVerbose:(NSString *)message {    DDLogVerbose(message);}+ (void) logError:(NSString *)message {    DDLogError(message);}+ (void) logInfo:(NSString *)message {    DDLogInfo(message);}@end

Important is to add the DDLogWrapper.h File to the ProjectName-Bridging-Header.h file and then you are able to instantiate in Swift the DDLogWrapper and call the methods logVerbose, logError, logInfo..

With the following code I was able to make a log statement:

DDLogWrapper.logVerbose("TEST");


I created a Swift wrapper for CocoaLumberjack that encapsulates everything nicely.

DDLog.addLogger(DDTTYLogger.sharedInstance())DDLog.logLevel = .InfologInfo("Info")logWarn("Warn")logDebug("Debug")logError("Error")


As of 2.0.0beta4, CocoaLumberJack includes a CocoaLumberJack.swift file that makes its integration with Swift projects really easily.

They use a global var defaultDebugLevel to set the DDLogLevel, and you can swift basic precompile macros to customize it to your needs.

#if DEBUG    defaultDebugLevel = DDLogLevel.All#else    defaultDebugLevel = DDLogLevel.Warning#endifDDLog.addLogger(DDTTYLogger.sharedInstance())DDLogDebug("Debug")DDLogInfo("Info")DDLogWarn("Warning")DDLogVerbose("Verbose")DDLogError("Error")