diff --git a/kordophone/Utilities/MBIMLogging.m b/kordophone/Utilities/MBIMLogging.m index d089e26..899b070 100644 --- a/kordophone/Utilities/MBIMLogging.m +++ b/kordophone/Utilities/MBIMLogging.m @@ -7,38 +7,69 @@ // #import "MBIMLogging.h" +#import #define ESC(inner) "\033[" inner "m" #define CLR ESC("0") #define BLD "1;" #define RED "31;" -extern void __MBIMLogCommon(MBIMLogLevel level, NSString *format, ...) +static os_log_t MBIMOSLog(void) { static dispatch_once_t onceToken; - static NSDateFormatter *dateFormatter = nil; + static os_log_t customLog = NULL; dispatch_once(&onceToken, ^{ - dateFormatter = [[NSDateFormatter alloc] init]; - dateFormatter.dateFormat = @"Y-MM-d HH:mm:ss"; + customLog = os_log_create("net.buzzert.kordophoned", "General"); }); - + + return customLog; +} + +extern void __MBIMLogCommon(MBIMLogLevel level, NSString *format, ...) +{ va_list args; va_start(args, format); NSString *message = [[NSString alloc] initWithFormat:format arguments:args]; va_end(args); - - const char *c_fmt = "%s"; - if (level == ML_NOTIFY) { - // BOLD - c_fmt = ESC(BLD) "%s"; - } else if (level == ML_ERROR) { - c_fmt = ESC(RED) "%s"; - } else if (level == ML_FATAL) { - c_fmt = ESC(BLD RED) "%s"; + + if (getenv("NSRunningFromLaunchd") != NULL) { + // Running with launchd, use oslog. + os_log_t mbimlog = MBIMOSLog(); + + switch (level) { + case ML_INFO: + os_log_debug(mbimlog, "%@", message); + break; + case ML_NOTIFY: + os_log_info(mbimlog, "%@", message); + break; + case ML_FATAL: + case ML_ERROR: + os_log_error(mbimlog, "%@", message); + break; + } + } else { + // Otherwise, write to stdout. + static dispatch_once_t onceToken; + static NSDateFormatter *dateFormatter = nil; + dispatch_once(&onceToken, ^{ + dateFormatter = [[NSDateFormatter alloc] init]; + dateFormatter.dateFormat = @"Y-MM-d HH:mm:ss"; + }); + + const char *c_fmt = "%s"; + if (level == ML_NOTIFY) { + // BOLD + c_fmt = ESC(BLD) "%s"; + } else if (level == ML_ERROR) { + c_fmt = ESC(RED) "%s"; + } else if (level == ML_FATAL) { + c_fmt = ESC(BLD RED) "%s"; + } + + NSString *dateStr = [dateFormatter stringFromDate:[NSDate date]]; + fprintf(stdout, "%s: ", [dateStr UTF8String]); + fprintf(stdout, c_fmt, [message UTF8String]); + fprintf(stdout, CLR "\n"); } - - NSString *dateStr = [dateFormatter stringFromDate:[NSDate date]]; - fprintf(stdout, "%s: ", [dateStr UTF8String]); - fprintf(stdout, c_fmt, [message UTF8String]); - fprintf(stdout, CLR "\n"); }