|
7 | 7 | #include <ggml.h> |
8 | 8 |
|
9 | 9 | #define UNUSED GGML_UNUSED |
| 10 | +#define APIR_LLAMA_CPP_LOG_TO_FILE_ENV "APIR_LLAMA_CPP_LOG_TO_FILE" |
| 11 | + |
| 12 | +static FILE * |
| 13 | +get_log_dest(void) |
| 14 | +{ |
| 15 | + static FILE *dest = NULL; |
| 16 | + if (dest) { |
| 17 | + return dest; |
| 18 | + } |
| 19 | + const char *apir_log_to_file = getenv(APIR_LLAMA_CPP_LOG_TO_FILE_ENV); |
| 20 | + if (!apir_log_to_file) { |
| 21 | + dest = stderr; |
| 22 | + return dest; |
| 23 | + } |
| 24 | + |
| 25 | + dest = fopen(apir_log_to_file, "w"); |
| 26 | + |
| 27 | + return dest; |
| 28 | +} |
| 29 | + |
| 30 | +#define APIR_VA_PRINT(prefix, format) \ |
| 31 | + do { \ |
| 32 | + FILE *dest = get_log_dest(); \ |
| 33 | + fprintf(dest, prefix); \ |
| 34 | + va_list argptr; \ |
| 35 | + va_start(argptr, format); \ |
| 36 | + vfprintf(dest, format, argptr); \ |
| 37 | + fprintf(dest, "\n"); \ |
| 38 | + va_end(argptr); \ |
| 39 | + fflush(dest); \ |
| 40 | + } while (0) |
10 | 41 |
|
11 | 42 | inline void |
12 | 43 | INFO(const char *format, ...) { |
13 | | - va_list argptr; |
14 | | - va_start(argptr, format); |
15 | | - vfprintf(stderr, format, argptr); |
16 | | - fprintf(stderr, "\n"); |
17 | | - va_end(argptr); |
| 44 | + APIR_VA_PRINT("INFO: ", format); |
18 | 45 | } |
19 | 46 |
|
20 | 47 | inline void |
21 | 48 | WARNING(const char *format, ...) { |
22 | | - fprintf(stderr, "WARNING: "); |
23 | | - |
24 | | - va_list argptr; |
25 | | - va_start(argptr, format); |
26 | | - vfprintf(stderr, format, argptr); |
27 | | - fprintf(stderr, "\n"); |
28 | | - va_end(argptr); |
| 49 | + APIR_VA_PRINT("WARNING: ", format); |
29 | 50 | } |
30 | 51 |
|
31 | 52 | inline void |
32 | 53 | ERROR(const char *format, ...) { |
33 | | - fprintf(stderr, "ERROR: "); |
34 | | - |
35 | | - va_list argptr; |
36 | | - va_start(argptr, format); |
37 | | - vfprintf(stderr, format, argptr); |
38 | | - fprintf(stderr, "\n"); |
39 | | - va_end(argptr); |
| 54 | + APIR_VA_PRINT("ERROR: ", format); |
40 | 55 | } |
41 | 56 |
|
42 | | -inline void |
| 57 | +[[noreturn]] inline void |
43 | 58 | FATAL(const char *format, ...) { |
44 | | - fprintf(stderr, "FATAL: "); |
45 | | - |
46 | | - va_list argptr; |
47 | | - va_start(argptr, format); |
48 | | - vfprintf(stderr, format, argptr); |
49 | | - fprintf(stderr, "\n"); |
50 | | - va_end(argptr); |
51 | | - if (format) |
52 | | - assert(false); |
| 59 | + APIR_VA_PRINT("FORMAT: ", format); |
| 60 | + abort(); |
53 | 61 | } |
0 commit comments