README.md
1# clog: C-style (a-la printf) logging library
2
3[![BSD (2 clause) License](https://img.shields.io/badge/License-BSD%202--Clause%20%22Simplified%22%20License-blue.svg)](https://github.com/pytorch/cpuinfo/blob/master/deps/clog/LICENSE)
4
5C-style library for logging errors, warnings, information notes, and debug information.
6
7## Features
8
9- printf-style interface for formatting variadic parameters.
10- Separate functions for logging errors, warnings, information notes, and debug information.
11- Independent logging settings for different modules.
12- Logging to logcat on Android and stderr/stdout on other platforms.
13- Compatible with C99 and C++.
14- Covered with unit tests.
15
16## Example
17
18```c
19#include <clog.h>
20
21#ifndef MYMODULE_LOG_LEVEL
22 #define MYMODULE_LOG_LEVEL CLOG_DEBUG
23#endif
24
25CLOG_DEFINE_LOG_DEBUG(mymodule_, "My Module", MYMODULE_LOG_LEVEL);
26CLOG_DEFINE_LOG_INFO(mymodule_, "My Module", MYMODULE_LOG_LEVEL);
27CLOG_DEFINE_LOG_WARNING(mymodule_, "My Module", MYMODULE_LOG_LEVEL);
28CLOG_DEFINE_LOG_ERROR(mymodule_, "My Module", MYMODULE_LOG_LEVEL);
29
30...
31
32void some_function(...) {
33 int status = ...
34 if (status != 0) {
35 mymodule_log_error(
36 "something really bad happened: "
37 "operation failed with status %d", status);
38 }
39
40 uint32_t expected_zero = ...
41 if (expected_zero != 0) {
42 mymodule_log_warning(
43 "something suspicious happened (var = %"PRIu32"), "
44 "fall back to generic implementation", expected_zero);
45 }
46
47 void* usually_non_null = ...
48 if (usually_non_null == NULL) {
49 mymodule_log_info(
50 "something unusual, but common, happened: "
51 "enabling work-around");
52 }
53
54 float a = ...
55 mymodule_log_debug("computed a = %.7f", a);
56}
57```
58