| |
| |
| |
|
|
| #ifndef AICHAT_LOGGING_H |
| #define AICHAT_LOGGING_H |
|
|
| #endif |
|
|
| #pragma once |
| #include <android/log.h> |
|
|
| #ifndef LOG_TAG |
| #define LOG_TAG "ai-chat" |
| #endif |
|
|
| #ifndef LOG_MIN_LEVEL |
| #if defined(NDEBUG) |
| #define LOG_MIN_LEVEL ANDROID_LOG_INFO |
| #else |
| #define LOG_MIN_LEVEL ANDROID_LOG_VERBOSE |
| #endif |
| #endif |
|
|
| static inline int ai_should_log(int prio) { |
| return __android_log_is_loggable(prio, LOG_TAG, LOG_MIN_LEVEL); |
| } |
|
|
| #if LOG_MIN_LEVEL <= ANDROID_LOG_VERBOSE |
| #define LOGv(...) do { if (ai_should_log(ANDROID_LOG_VERBOSE)) __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG, __VA_ARGS__); } while (0) |
| #else |
| #define LOGv(...) ((void)0) |
| #endif |
|
|
| #if LOG_MIN_LEVEL <= ANDROID_LOG_DEBUG |
| #define LOGd(...) do { if (ai_should_log(ANDROID_LOG_DEBUG)) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__); } while (0) |
| #else |
| #define LOGd(...) ((void)0) |
| #endif |
|
|
| #define LOGi(...) do { if (ai_should_log(ANDROID_LOG_INFO )) __android_log_print(ANDROID_LOG_INFO , LOG_TAG, __VA_ARGS__); } while (0) |
| #define LOGw(...) do { if (ai_should_log(ANDROID_LOG_WARN )) __android_log_print(ANDROID_LOG_WARN , LOG_TAG, __VA_ARGS__); } while (0) |
| #define LOGe(...) do { if (ai_should_log(ANDROID_LOG_ERROR)) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__); } while (0) |
|
|
| static inline int android_log_prio_from_ggml(enum ggml_log_level level) { |
| switch (level) { |
| case GGML_LOG_LEVEL_ERROR: return ANDROID_LOG_ERROR; |
| case GGML_LOG_LEVEL_WARN: return ANDROID_LOG_WARN; |
| case GGML_LOG_LEVEL_INFO: return ANDROID_LOG_INFO; |
| case GGML_LOG_LEVEL_DEBUG: return ANDROID_LOG_DEBUG; |
| default: return ANDROID_LOG_DEFAULT; |
| } |
| } |
|
|
| static inline void aichat_android_log_callback(enum ggml_log_level level, |
| const char* text, |
| void* ) { |
| const int prio = android_log_prio_from_ggml(level); |
| if (!ai_should_log(prio)) return; |
| __android_log_write(prio, LOG_TAG, text); |
| } |
|
|