DDAbstractLogger

Objective-C

@interface DDAbstractLogger : NSObject <DDLogger> {
  id<DDLogFormatter> _logFormatter;
  dispatch_queue_t _loggerQueue;
}

Swift

class DDAbstractLogger : NSObject, DDLogger

The DDLogger protocol specifies that an optional formatter can be added to a logger. Most (but not all) loggers will want to support formatters.

However, writing getters and setters in a thread safe manner, while still maintaining maximum speed for the logging process, is a difficult task.

To do it right, the implementation of the getter/setter has strict requirements:

  • Must NOT require the logMessage: method to acquire a lock.
  • Must NOT require the logMessage: method to access an atomic property (also a lock of sorts).

To simplify things, an abstract logger is provided that implements the getter and setter.

Logger implementations may simply extend this class, and they can ACCESS THE FORMATTER VARIABLE DIRECTLY from within their logMessage: method!

  • Undocumented

    Declaration

    Objective-C

    id <DDLogFormatter> _logFormatter
  • Undocumented

    Declaration

    Objective-C

    dispatch_queue_t _loggerQueue
  • Undocumented

    Declaration

    Objective-C

    @property (nonatomic, strong, nullable) id <DDLogFormatter> logFormatter

    Swift

    var logFormatter: DDLogFormatter? { get set }
  • Undocumented

    Declaration

    Objective-C

    @property (nonatomic, DISPATCH_QUEUE_REFERENCE_TYPE) dispatch_queue_t loggerQueue

    Swift

    var loggerQueue: DispatchQueue { get set }
  • Return YES if the current logger uses a global queue for logging

    Declaration

    Objective-C

    @property (nonatomic, readonly, getter=isOnGlobalLoggingQueue) BOOL onGlobalLoggingQueue;

    Swift

    var isOnGlobalLoggingQueue: Bool { get }
  • Return YES if the current logger uses the internal designated queue for logging

    Declaration

    Objective-C

    @property (nonatomic, readonly, getter=isOnInternalLoggerQueue) BOOL onInternalLoggerQueue;

    Swift

    var isOnInternalLoggerQueue: Bool { get }