|
# 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); |
|
} |
|
``` |
|
|