• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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