Last active
January 3, 2016 21:39
-
-
Save shaps80/8523323 to your computer and use it in GitHub Desktop.
Provides better logging with pretty formatting custom timestamp formatting. Fully customisable, and easy drop in replacement to start tidying up existing logs. No additional or frameworks required! Simply replace all NSLog occurrences with SPXLog and watch the logs get prettier! ;)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import <Foundation/Foundation.h> | |
#ifdef __SPXLOGGING | |
#define __SPXLOGGING | |
/** | |
* Custom C function for getting the current date/time. | |
* This function provides custom formatting and is much faster than using | |
* NSDate and NSDateFormatter, which a lot of log messages are sent. | |
* Also this way there's little additional memory overhead during logging. | |
* | |
* @return A formatted timestamp | |
*/ | |
char * getTime(); | |
/** | |
* Logs the current time, line number, class and method that called this macro | |
*/ | |
#define logMethod NSLog((@"%s | %d | %@ | %@ "), getTime(), __LINE__, NSStringFromClass([self class]), NSStringFromSelector(_cmd)); | |
/** | |
* Custom logging macro to provide pretty formatting of log messages | |
*/ | |
#define SPXLog(fmt, ...) NSLog((@"%s | %d | %@ | %@ | " fmt), getTime(), __LINE__, NSStringFromClass([self class]), NSStringFromSelector(_cmd), ##__VA_ARGS__) | |
/** | |
* Strips the default NSLog statements of timestamps, etc... | |
*/ | |
#define NSLog(FORMAT, ...) fprintf(stderr,"%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]) | |
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <time.h> | |
#import "Logging.h" | |
/* | |
Format | |
%a Abbreviated weekday name * Thu | |
%A Full weekday name * Thursday | |
%b Abbreviated month name * Aug | |
%B Full month name * August | |
%c Date and time representation * Thu Aug 23 14:55:02 2001 | |
%C Year divided by 100 and truncated to integer (00-99) 20 | |
%d Day of the month, zero-padded (01-31) 23 | |
%D Short MM/DD/YY date, equivalent to %m/%d/%y 08/23/01 | |
%e Day of the month, space-padded ( 1-31) 23 | |
%F Short YYYY-MM-DD date, equivalent to %Y-%m-%d 2001-08-23 | |
%g Week-based year, last two digits (00-99) 01 | |
%G Week-based year 2001 | |
%h Abbreviated month name * (same as %b) Aug | |
%H Hour in 24h format (00-23) 14 | |
%I Hour in 12h format (01-12) 02 | |
%j Day of the year (001-366) 235 | |
%m Month as a decimal number (01-12) 08 | |
%M Minute (00-59) 55 | |
%n New-line character ('\n') | |
%p AM or PM designation PM | |
%r 12-hour clock time * 02:55:02 pm | |
%R 24-hour HH:MM time, equivalent to %H:%M 14:55 | |
%S Second (00-61) 02 | |
%t Horizontal-tab character ('\t') | |
%T ISO 8601 time format (HH:MM:SS), equivalent to %H:%M:%S 14:55:02 | |
%u ISO 8601 weekday as number with Monday as 1 (1-7) 4 | |
%U Week number with the first Sunday as the first day of week one (00-53) 33 | |
%V ISO 8601 week number (00-53) 34 | |
%w Weekday as a decimal number with Sunday as 0 (0-6) 4 | |
%W Week number with the first Monday as the first day of week one (00-53) 34 | |
%x Date representation * 08/23/01 | |
%X Time representation * 14:55:02 | |
%y Year, last two digits (00-99) 01 | |
%Y Year 2001 | |
%z ISO 8601 offset from UTC in timezone (1 minute=1, 1 hour=100) | |
If timezone cannot be termined, no characters +100 | |
%Z Timezone name or abbreviation * | |
If timezone cannot be termined, no characters CDT | |
%% A % sign % | |
Modifiers | |
E Uses the locale's alternative representation, applies to %Ec %EC %Ex %EX %Ey %EY | |
O Uses the locale's alternative numeric symbols, applies to %Od %Oe %OH %OI %Om %OM %OS %Ou %OU %OV %Ow %OW %Oy | |
*/ | |
char * getTime() | |
{ | |
time_t rawtime; | |
struct tm * timeinfo; | |
char buffer[80]; | |
time (&rawtime); | |
timeinfo = localtime (&rawtime); | |
// see format strings above - YYYY-MM-DD HH:MM:SS | |
strftime(buffer, sizeof(buffer), "%F %T", timeinfo); | |
char *time; | |
time=(char *)malloc(64); | |
strcpy(time, buffer); | |
return time; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment