X-Git-Url: https://harrygodden.com/git/?p=csRadar.git;a=blobdiff_plain;f=csrLog.h;fp=csrLog.h;h=f0735ad84e356a2a29eafe3cd7c025285a4191c7;hp=0000000000000000000000000000000000000000;hb=d7339f0f28ca5b35ad60a393ca270cbae1a154c6;hpb=3e1642e28847218d89d1bec2f8b035c10359ac91 diff --git a/csrLog.h b/csrLog.h new file mode 100644 index 0000000..f0735ad --- /dev/null +++ b/csrLog.h @@ -0,0 +1,57 @@ +// Logging with colour +// ====================================================================================== + +#define KNRM "\x1B[0m" +#define KRED "\x1B[31m" +#define KGRN "\x1B[32m" +#define KYEL "\x1B[33m" +#define KBLU "\x1B[34m" +#define KMAG "\x1B[35m" +#define KCYN "\x1B[36m" +#define KWHT "\x1B[37m" + +#define LOG_TYPE_DEV 0 +#define LOG_TYPE_INFO 1 +#define LOG_TYPE_ALLOC 2 +#define LOG_TYPE_FREE 3 +#define LOG_TYPE_SUCCESS 4 +#define LOG_TYPE_ERROR 5 +#define LOG_TYPE_WARN 6 + +void(*CSR_LOG_REDIR_STDOUT)(int, const char*) = NULL; +int CSR_LOG_ENABLE_STDOUT = 1; + +void csr_log_out( FILE *f, int type, const char* prefix, const char* fmt, ... ) +{ + if( CSR_LOG_ENABLE_STDOUT ) + { + fprintf( f, "%s", prefix ); + va_list args; + va_start( args, fmt ); + vfprintf( f, fmt, args ); + va_end( args ); + fprintf( f, KNRM ); // reset + } + + // Send to a seperate logging function + if( CSR_LOG_REDIR_STDOUT ) + { + char buffer[ 512 ]; + va_list args; + va_start( args, fmt ); + vsnprintf( buffer, 512, fmt, args ); + va_end( args ); + CSR_LOG_REDIR_STDOUT( type, buffer ); + } +} + +#define log_dev(FMT, ...) csr_log_out( stdout, LOG_TYPE_DEV, (KNRM " dev" KWHT "| " KNRM), FMT, ##__VA_ARGS__ ) +#define log_info(FMT, ...) csr_log_out( stdout, LOG_TYPE_INFO, (KNRM " info" KWHT "| " KNRM), FMT, ##__VA_ARGS__ ) +#define log_alloc(FMT, ...) csr_log_out( stdout, LOG_TYPE_ALLOC, (KCYN " alloc" KWHT "| " KNRM), FMT, ##__VA_ARGS__ ) +#define log_free(FMT, ...) csr_log_out( stdout, LOG_TYPE_FREE, (KMAG " free" KWHT "| " KNRM), FMT, ##__VA_ARGS__ ) +#define log_success(FMT, ...) csr_log_out( stdout, LOG_TYPE_SUCCESS, (KGRN "success" KWHT "| " KGRN), FMT, ##__VA_ARGS__ ) +#define log_error(FMT, ...) csr_log_out( stderr, LOG_TYPE_ERROR, (KRED " error" KWHT "| " KRED), FMT, ##__VA_ARGS__ ) +#define log_warn(FMT, ...) csr_log_out( stdout, LOG_TYPE_WARN, (KYEL " warn" KWHT "| " KYEL), FMT, ##__VA_ARGS__ ) + +#define log_init log_alloc +#define log_dealloc log_free