123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- #import <Foundation/Foundation.h>
- #if TARGET_OS_IPHONE
- #import <UIKit/UIColor.h>
- #else
- #import <AppKit/NSColor.h>
- #endif
- #import "DDLog.h"
- /**
- * Welcome to Cocoa Lumberjack!
- *
- * The project page has a wealth of documentation if you have any questions.
- * https://github.com/robbiehanson/CocoaLumberjack
- *
- * If you're new to the project you may wish to read the "Getting Started" wiki.
- * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted
- *
- *
- * This class provides a logger for Terminal output or Xcode console output,
- * depending on where you are running your code.
- *
- * As described in the "Getting Started" page,
- * the traditional NSLog() function directs it's output to two places:
- *
- * - Apple System Log (so it shows up in Console.app)
- * - StdErr (if stderr is a TTY, so log statements show up in Xcode console)
- *
- * To duplicate NSLog() functionality you can simply add this logger and an asl logger.
- * However, if you instead choose to use file logging (for faster performance),
- * you may choose to use only a file logger and a tty logger.
- **/
- @interface DDTTYLogger : DDAbstractLogger <DDLogger>
- {
- NSCalendar *calendar;
- NSUInteger calendarUnitFlags;
-
- NSString *appName;
- char *app;
- size_t appLen;
-
- NSString *processID;
- char *pid;
- size_t pidLen;
-
- BOOL colorsEnabled;
- NSMutableArray *colorProfilesArray;
- NSMutableDictionary *colorProfilesDict;
- }
- + (DDTTYLogger *)sharedInstance;
- /* Inherited from the DDLogger protocol:
- *
- * Formatters may optionally be added to any logger.
- *
- * If no formatter is set, the logger simply logs the message as it is given in logMessage,
- * or it may use its own built in formatting style.
- *
- * More information about formatters can be found here:
- * https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomFormatters
- *
- * The actual implementation of these methods is inherited from DDAbstractLogger.
- - (id <DDLogFormatter>)logFormatter;
- - (void)setLogFormatter:(id <DDLogFormatter>)formatter;
-
- */
- /**
- * Want to use different colors for different log levels?
- * Enable this property.
- *
- * If you run the application via the Terminal (not Xcode),
- * the logger will map colors to xterm-256color or xterm-color (if available).
- *
- * Xcode does NOT natively support colors in the Xcode debugging console.
- * You'll need to install the XcodeColors plugin to see colors in the Xcode console.
- * https://github.com/robbiehanson/XcodeColors
- *
- * The default value if NO.
- **/
- @property (readwrite, assign) BOOL colorsEnabled;
- /**
- * The default color set (foregroundColor, backgroundColor) is:
- *
- * - LOG_FLAG_ERROR = (red, nil)
- * - LOG_FLAG_WARN = (orange, nil)
- *
- * You can customize the colors however you see fit.
- * Please note that you are passing a flag, NOT a level.
- *
- * GOOD : [ttyLogger setForegroundColor:pink backgroundColor:nil forFlag:LOG_FLAG_INFO]; // <- Good :)
- * BAD : [ttyLogger setForegroundColor:pink backgroundColor:nil forFlag:LOG_LEVEL_INFO]; // <- BAD! :(
- *
- * LOG_FLAG_INFO = 0...00100
- * LOG_LEVEL_INFO = 0...00111 <- Would match LOG_FLAG_INFO and LOG_FLAG_WARN and LOG_FLAG_ERROR
- *
- * If you run the application within Xcode, then the XcodeColors plugin is required.
- *
- * If you run the application from a shell, then DDTTYLogger will automatically map the given color to
- * the closest available color. (xterm-256color or xterm-color which have 256 and 16 supported colors respectively.)
- *
- * This method invokes setForegroundColor:backgroundColor:forFlag:context: and passes the default context (0).
- **/
- #if TARGET_OS_IPHONE
- - (void)setForegroundColor:(UIColor *)txtColor backgroundColor:(UIColor *)bgColor forFlag:(int)mask;
- #else
- - (void)setForegroundColor:(NSColor *)txtColor backgroundColor:(NSColor *)bgColor forFlag:(int)mask;
- #endif
- /**
- * Just like setForegroundColor:backgroundColor:flag, but allows you to specify a particular logging context.
- *
- * A logging context is often used to identify log messages coming from a 3rd party framework,
- * although logging context's can be used for many different functions.
- *
- * Logging context's are explained in further detail here:
- * https://github.com/robbiehanson/CocoaLumberjack/wiki/CustomContext
- **/
- #if TARGET_OS_IPHONE
- - (void)setForegroundColor:(UIColor *)txtColor backgroundColor:(UIColor *)bgColor forFlag:(int)mask context:(int)ctxt;
- #else
- - (void)setForegroundColor:(NSColor *)txtColor backgroundColor:(NSColor *)bgColor forFlag:(int)mask context:(int)ctxt;
- #endif
- /**
- * Similar to the methods above, but allows you to map DDLogMessage->tag to a particular color profile.
- * For example, you could do something like this:
- *
- * static NSString *const PurpleTag = @"PurpleTag";
- *
- * #define DDLogPurple(frmt, ...) LOG_OBJC_TAG_MACRO(NO, 0, 0, 0, PurpleTag, frmt, ##__VA_ARGS__)
- *
- * And then in your applicationDidFinishLaunching, or wherever you configure Lumberjack:
- *
- * #if TARGET_OS_IPHONE
- * UIColor *purple = [UIColor colorWithRed:(64/255.0) green:(0/255.0) blue:(128/255.0) alpha:1.0];
- * #else
- * NSColor *purple = [NSColor colorWithCalibratedRed:(64/255.0) green:(0/255.0) blue:(128/255.0) alpha:1.0];
- *
- * [[DDTTYLogger sharedInstance] setForegroundColor:purple backgroundColor:nil forTag:PurpleTag];
- * [DDLog addLogger:[DDTTYLogger sharedInstance]];
- *
- * This would essentially give you a straight NSLog replacement that prints in purple:
- *
- * DDLogPurple(@"I'm a purple log message!");
- **/
- #if TARGET_OS_IPHONE
- - (void)setForegroundColor:(UIColor *)txtColor backgroundColor:(UIColor *)bgColor forTag:(id <NSCopying>)tag;
- #else
- - (void)setForegroundColor:(NSColor *)txtColor backgroundColor:(NSColor *)bgColor forTag:(id <NSCopying>)tag;
- #endif
- /**
- * Clearing color profiles.
- **/
- - (void)clearColorsForFlag:(int)mask;
- - (void)clearColorsForFlag:(int)mask context:(int)context;
- - (void)clearColorsForTag:(id <NSCopying>)tag;
- - (void)clearColorsForAllFlags;
- - (void)clearColorsForAllTags;
- - (void)clearAllColors;
- @end
|