Private
Public Access
1
0

logging: Use os log if running in launchd

This commit is contained in:
2024-01-07 18:12:17 -08:00
parent c65803845b
commit 72527088cc

View File

@@ -7,38 +7,69 @@
// //
#import "MBIMLogging.h" #import "MBIMLogging.h"
#import <os/log.h>
#define ESC(inner) "\033[" inner "m" #define ESC(inner) "\033[" inner "m"
#define CLR ESC("0") #define CLR ESC("0")
#define BLD "1;" #define BLD "1;"
#define RED "31;" #define RED "31;"
extern void __MBIMLogCommon(MBIMLogLevel level, NSString *format, ...) static os_log_t MBIMOSLog(void)
{ {
static dispatch_once_t onceToken; static dispatch_once_t onceToken;
static NSDateFormatter *dateFormatter = nil; static os_log_t customLog = NULL;
dispatch_once(&onceToken, ^{ dispatch_once(&onceToken, ^{
dateFormatter = [[NSDateFormatter alloc] init]; customLog = os_log_create("net.buzzert.kordophoned", "General");
dateFormatter.dateFormat = @"Y-MM-d HH:mm:ss";
}); });
return customLog;
}
extern void __MBIMLogCommon(MBIMLogLevel level, NSString *format, ...)
{
va_list args; va_list args;
va_start(args, format); va_start(args, format);
NSString *message = [[NSString alloc] initWithFormat:format arguments:args]; NSString *message = [[NSString alloc] initWithFormat:format arguments:args];
va_end(args); va_end(args);
const char *c_fmt = "%s"; if (getenv("NSRunningFromLaunchd") != NULL) {
if (level == ML_NOTIFY) { // Running with launchd, use oslog.
// BOLD os_log_t mbimlog = MBIMOSLog();
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]]; switch (level) {
fprintf(stdout, "%s: ", [dateStr UTF8String]); case ML_INFO:
fprintf(stdout, c_fmt, [message UTF8String]); os_log_debug(mbimlog, "%@", message);
fprintf(stdout, CLR "\n"); 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");
}
} }