Felipe97/llama-cpp-compiled
01.1k
1#pragma once2 3#include "ggml.h" // for ggml_log_level4 5#define LOG_CLR_TO_EOL "\033[K\r"6#define LOG_COL_DEFAULT "\033[0m"7#define LOG_COL_BOLD "\033[1m"8#define LOG_COL_RED "\033[31m"9#define LOG_COL_GREEN "\033[32m"10#define LOG_COL_YELLOW "\033[33m"11#define LOG_COL_BLUE "\033[34m"12#define LOG_COL_MAGENTA "\033[35m"13#define LOG_COL_CYAN "\033[36m"14#define LOG_COL_WHITE "\033[37m"15 16#ifndef __GNUC__17# define LOG_ATTRIBUTE_FORMAT(...)18#elif defined(__MINGW32__) && !defined(__clang__)19# define LOG_ATTRIBUTE_FORMAT(...) __attribute__((format(gnu_printf, __VA_ARGS__)))20#else21# define LOG_ATTRIBUTE_FORMAT(...) __attribute__((format(printf, __VA_ARGS__)))22#endif23 24#define LOG_LEVEL_DEBUG 525#define LOG_LEVEL_TRACE 426#define LOG_LEVEL_INFO 327#define LOG_LEVEL_WARN 228#define LOG_LEVEL_ERROR 129#define LOG_LEVEL_OUTPUT 0 // output data from tools30 31#define LOG_DEFAULT_DEBUG LOG_LEVEL_DEBUG32#define LOG_DEFAULT_LLAMA LOG_LEVEL_INFO33 34enum log_colors {35 LOG_COLORS_AUTO = -1,36 LOG_COLORS_DISABLED = 0,37 LOG_COLORS_ENABLED = 1,38};39 40// needed by the LOG_TMPL macro to avoid computing log arguments if the verbosity lower41// set via common_log_set_verbosity()42int common_log_get_verbosity_thold(void);43 44void common_log_set_verbosity_thold(int verbosity); // not thread-safe45 46bool common_log_get_jsonl(void);47 48void common_log_set_jsonl(bool jsonl); // not thread-safe49 50int common_log_get_verbosity(enum ggml_log_level level);51 52void common_log_default_callback(enum ggml_log_level level, const char * text, void * user_data);53 54// the common_log uses an internal worker thread to print/write log messages55// when the worker thread is paused, incoming log messages are discarded56struct common_log;57 58struct common_log * common_log_init();59 60// Singleton, intentionally leaked to avoid Windows teardown hangs.61// Call common_log_flush() before exit if you want to ensure all logs are flushed.62struct common_log * common_log_main();63 64void common_log_pause (struct common_log * log); // pause the worker thread, not thread-safe65void common_log_resume(struct common_log * log); // resume the worker thread, not thread-safe66void common_log_free (struct common_log * log);67 68LOG_ATTRIBUTE_FORMAT(3, 4)69void common_log_add(struct common_log * log, enum ggml_log_level level, const char * fmt, ...);70 71// defaults: file = NULL, colors = false, prefix = false, timestamps = false72//73// regular log output:74//75// ggml_backend_metal_log_allocated_size: allocated buffer, size = 6695.84 MiB, ( 6695.91 / 21845.34)76// llm_load_tensors: ggml ctx size = 0.27 MiB77// llm_load_tensors: offloading 32 repeating layers to GPU78// llm_load_tensors: offloading non-repeating layers to GPU79//80// with prefix = true, timestamps = true, the log output will look like this:81//82// 0.00.035.060 D ggml_backend_metal_log_allocated_size: allocated buffer, size = 6695.84 MiB, ( 6695.91 / 21845.34)83// 0.00.035.064 I llm_load_tensors: ggml ctx size = 0.27 MiB84// 0.00.090.578 I llm_load_tensors: offloading 32 repeating layers to GPU85// 0.00.090.579 I llm_load_tensors: offloading non-repeating layers to GPU86//87// D - debug (stderr, V = LOG_DEFAULT_DEBUG)88// I - info (stdout, V = LOG_DEFAULT_INFO)89// W - warning (stderr, V = LOG_DEFAULT_WARN)90// E - error (stderr, V = LOG_DEFAULT_ERROR)91// O - output (stdout, V = LOG_DEFAULT_OUTPUT)92//93 94void common_log_set_file (struct common_log * log, const char * file); // not thread-safe95void common_log_set_colors (struct common_log * log, log_colors colors); // not thread-safe96void common_log_set_prefix (struct common_log * log, bool prefix); // whether to output prefix to each log97void common_log_set_timestamps(struct common_log * log, bool timestamps); // whether to output timestamps in the prefix98void common_log_flush (struct common_log * log); // flush all pending log messages99 100// helper macros for logging101// use these to avoid computing log arguments if the verbosity of the log is higher than the threshold102//103// for example:104//105// LOG_DBG("this is a debug message: %d\n", expensive_function());106//107// this will avoid calling expensive_function() if LOG_DEFAULT_DEBUG > common_log_verbosity_thold108//109 110#define LOG_TMPL(level, verbosity, ...) \111 do { \112 if ((verbosity) <= common_log_get_verbosity_thold()) { \113 common_log_add(common_log_main(), (level), __VA_ARGS__); \114 } \115 } while (0)116 117#define LOG(...) LOG_TMPL(GGML_LOG_LEVEL_NONE, LOG_LEVEL_OUTPUT, __VA_ARGS__)118#define LOGV(verbosity, ...) LOG_TMPL(GGML_LOG_LEVEL_NONE, verbosity, __VA_ARGS__)119 120#define LOG_DBG(...) LOG_TMPL(GGML_LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG, __VA_ARGS__)121#define LOG_TRC(...) LOG_TMPL(GGML_LOG_LEVEL_INFO, LOG_LEVEL_TRACE, __VA_ARGS__)122#define LOG_INF(...) LOG_TMPL(GGML_LOG_LEVEL_INFO, LOG_LEVEL_INFO, __VA_ARGS__)123#define LOG_WRN(...) LOG_TMPL(GGML_LOG_LEVEL_WARN, LOG_LEVEL_WARN, __VA_ARGS__)124#define LOG_ERR(...) LOG_TMPL(GGML_LOG_LEVEL_ERROR, LOG_LEVEL_ERROR, __VA_ARGS__)125#define LOG_CNT(...) LOG_TMPL(GGML_LOG_LEVEL_CONT, LOG_LEVEL_INFO, __VA_ARGS__) // same as INFO126 127#define LOG_DBGV(verbosity, ...) LOG_TMPL(GGML_LOG_LEVEL_DEBUG, verbosity, __VA_ARGS__)128#define LOG_TRCV(verbosity, ...) LOG_TMPL(GGML_LOG_LEVEL_TRACE, verbosity, __VA_ARGS__)129#define LOG_INFV(verbosity, ...) LOG_TMPL(GGML_LOG_LEVEL_INFO, verbosity, __VA_ARGS__)130#define LOG_WRNV(verbosity, ...) LOG_TMPL(GGML_LOG_LEVEL_WARN, verbosity, __VA_ARGS__)131#define LOG_ERRV(verbosity, ...) LOG_TMPL(GGML_LOG_LEVEL_ERROR, verbosity, __VA_ARGS__)132#define LOG_CNTV(verbosity, ...) LOG_TMPL(GGML_LOG_LEVEL_CONT, verbosity, __VA_ARGS__)133 134class common_json; // defined in common/json.h135 136// helper allows different types of json output137// no-op if --log-jsonl is not set138void common_log_add_json(struct common_log * log, const char * type, const common_json & data);139 140// will only print if --log-jsonl is set141#define LOG_JSON(type, data) \142 do { \143 if (common_log_get_jsonl()) { \144 common_log_add_json(common_log_main(), type, data); \145 } \146 } while (0)147 