# clog: C-style (a-la printf) logging library [](https://github.com/pytorch/cpuinfo/blob/master/deps/clog/LICENSE) C-style library for logging errors, warnings, information notes, and debug information. ## Features - printf-style interface for formatting variadic parameters. - Separate functions for logging errors, warnings, information notes, and debug information. - Independent logging settings for different modules. - Logging to logcat on Android and stderr/stdout on other platforms. - Compatible with C99 and C++. - Covered with unit tests. ## Example ```c #include <clog.h> #ifndef MYMODULE_LOG_LEVEL #define MYMODULE_LOG_LEVEL CLOG_DEBUG #endif CLOG_DEFINE_LOG_DEBUG(mymodule_, "My Module", MYMODULE_LOG_LEVEL); CLOG_DEFINE_LOG_INFO(mymodule_, "My Module", MYMODULE_LOG_LEVEL); CLOG_DEFINE_LOG_WARNING(mymodule_, "My Module", MYMODULE_LOG_LEVEL); CLOG_DEFINE_LOG_ERROR(mymodule_, "My Module", MYMODULE_LOG_LEVEL); ... void some_function(...) { int status = ... if (status != 0) { mymodule_log_error( "something really bad happened: " "operation failed with status %d", status); } uint32_t expected_zero = ... if (expected_zero != 0) { mymodule_log_warning( "something suspicious happened (var = %"PRIu32"), " "fall back to generic implementation", expected_zero); } void* usually_non_null = ... if (usually_non_null == NULL) { mymodule_log_info( "something unusual, but common, happened: " "enabling work-around"); } float a = ... mymodule_log_debug("computed a = %.7f", a); } ```