#include <os/log.h>
#include <string.h>
os_log_t apple_log_create(const char *subsystem, const char *category) {
return os_log_create(subsystem, category);
}
void apple_log_release(os_log_t log) {
extern void os_release(void *object);
if (log) os_release((void *)log);
}
void apple_log_emit(os_log_t log, int level, const char *message) {
if (!log || !message) return;
os_log_type_t type = (os_log_type_t)level;
os_log_with_type(log, type, "%{public}s", message);
}
void apple_log_emit_default(int level, const char *message) {
if (!message) return;
os_log_type_t type = (os_log_type_t)level;
os_log_with_type(OS_LOG_DEFAULT, type, "%{public}s", message);
}
bool apple_log_type_enabled(os_log_t log, int level) {
if (!log) log = OS_LOG_DEFAULT;
return os_log_type_enabled(log, (os_log_type_t)level);
}
#include <os/signpost.h>
uint64_t apple_signpost_id_generate(os_log_t log) {
if (!log) log = OS_LOG_DEFAULT;
return (uint64_t)os_signpost_id_generate(log);
}
bool apple_signpost_enabled(os_log_t log) {
if (!log) log = OS_LOG_DEFAULT;
return os_signpost_enabled(log);
}
void apple_signpost_event_emit(os_log_t log, uint64_t spid, const char *name, const char *message) {
if (!log) log = OS_LOG_DEFAULT;
if (!name) name = "event";
os_signpost_event_emit(log, (os_signpost_id_t)spid, "rust", "%{public}s %{public}s",
name, message ? message : "");
}
void apple_signpost_interval_begin(os_log_t log, uint64_t spid, const char *name) {
if (!log) log = OS_LOG_DEFAULT;
if (!name) name = "interval";
os_signpost_interval_begin(log, (os_signpost_id_t)spid, "rust", "%{public}s", name);
}
void apple_signpost_interval_end(os_log_t log, uint64_t spid, const char *name) {
if (!log) log = OS_LOG_DEFAULT;
if (!name) name = "interval";
os_signpost_interval_end(log, (os_signpost_id_t)spid, "rust", "%{public}s", name);
}