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")