Banjo API 0.0.1
Multi-purpose C99 API
|
Logging utility functions. More...
Macros | |
#define | BJ_MAXIMUM_LOG_LEN 120 |
Maximum length of log messages. | |
#define | bj_log(LEVEL, ...) |
Log a message using the given level LEVEL . | |
#define | bj_trace(...) |
Log a message using the BJ_LOG_TRACE level. | |
#define | bj_debug(...) |
Log a message using the BJ_LOG_DEBUG level. | |
#define | bj_info(...) |
Log a message using the BJ_LOG_INFO level. | |
#define | bj_warn(...) |
Log a message using the BJ_LOG_WARN level. | |
#define | bj_err(...) |
Log a message using the BJ_LOG_ERROR level. | |
#define | bj_fatal(...) |
Log a message using the BJ_LOG_FATAL level. | |
Enumerations | |
enum | { BJ_LOG_TRACE , BJ_LOG_DEBUG , BJ_LOG_INFO , BJ_LOG_WARN , BJ_LOG_ERROR , BJ_LOG_FATAL } |
Log Levels. More... | |
Functions | |
const char * | bj_log_get_level_string (int level) |
Returns a string describing the given level . | |
void | bj_log_set_level (int level) |
Sets the default log level. | |
int | bj_log_get_level (void) |
Gets the current log level set by bj_log_set_level. | |
size_t | bj_message (int level, const char *p_file, int line, const char *p_format,...) |
Generic message reporting function. | |
#define bj_debug | ( | ... | ) |
The function effectively calls bj_message, forwarding arguments to format the input string.
This function is preferred over calling bj_log of bj_message directly for clarity.
... | The string formatting, forwarded to the last arguments of bj_message. |
#define bj_err | ( | ... | ) |
The function effectively calls bj_message, forwarding arguments to format the input string.
This function is preferred over calling bj_log of bj_message directly for clarity.
... | The string formatting, forwarded to the last arguments of bj_message. |
#define bj_fatal | ( | ... | ) |
The function effectively calls bj_message, forwarding arguments to format the input string.
This function is preferred over calling bj_log of bj_message directly for clarity.
... | The string formatting, forwarded to the last arguments of bj_message. |
#define bj_info | ( | ... | ) |
The function effectively calls bj_message, forwarding arguments to format the input string.
This function is preferred over calling bj_log of bj_message directly for clarity.
... | The string formatting, forwarded to the last arguments of bj_message. |
#define bj_log | ( | LEVEL, | |
... ) |
Any integer value can be used for LEVEL
, but usually any of BJ_LOG_TRACE
, BJ_LOG_DEBUG
, BJ_LOG_INFO
, BJ_LOG_WARN
, BJ_LOG_ERROR
or BJ_LOG_FATAL
is used.
When a message is sent with a given level, it will be reported only if the value set with bj_log_set_level is at least the same value.
The function effectively calls bj_message, forwarding arguments to format the input string.
LEVEL | The log level to report the message in. |
... | Arguments forwarded to bj_message. |
#define BJ_MAXIMUM_LOG_LEN 120 |
Log messages, including header information such as timestamp and log level, cannot have a size in bytes larger than BJ_MAXIMUM_LOG_LEN
, excluding the null character. In case a message is longer than this limit, the content is truncated in order of priority as described in bj_message.
#define bj_trace | ( | ... | ) |
The function effectively calls bj_message, forwarding arguments to format the input string.
This function is preferred over calling bj_log of bj_message directly for clarity.
... | The string formatting, forwarded to the last arguments of bj_message. |
#define bj_warn | ( | ... | ) |
The function effectively calls bj_message, forwarding arguments to format the input string.
This function is preferred over calling bj_log of bj_message directly for clarity.
... | The string formatting, forwarded to the last arguments of bj_message. |
anonymous enum |
Level values are ordered from 0.
int bj_log_get_level | ( | void | ) |
const char * bj_log_get_level_string | ( | int | level | ) |
The function is only valid if called with BJ_LOG_TRACE
, BJ_LOG_DEBUG
, BJ_LOG_INFO
, BJ_LOG_WARN
, BJ_LOG_ERROR
or BJ_LOG_FATAL
.
The returned value is owned by the callee.
level | The log level to get the description from. |
level
. void bj_log_set_level | ( | int | level | ) |
Once set, any call to bj_message, bj_log and helper macros will only report a message is its level is at least level
.
level | The level to set. |
If not set, default is BJ_LOG_TRACE.
size_t bj_message | ( | int | level, |
const char * | p_file, | ||
int | line, | ||
const char * | p_format, | ||
... ) |
Sends a message using the given level
. Message will only be reported if level
is at least the value set as a parameter to bj_log_set_level (or BJ_LOG_TRACE if never called).
The more convenient functions bj_log, bj_trace, ... should be used for simplicity.
The string formatting follows standard printf
signature and behaviour.
level | The log level the message is reported in. |
p_file | The file name the message is reported from. |
line | The line number the message is reported from. |
p_format,... | The formatted string to report. |
The log message will have the following format:
TIME LEVEL: (SOURCE) MESSAGE
Where:TIME
is in the format "HH:MM:SS" and takes 8 charactersLEVEL
, in square brackets, is the result of calling bj_log_get_level_string. It takes up to 4 to 5 characters.SOURCE
is in the format "FILE:LINE" and takes an undetermined number of characters. This is only present in a debug build.MESSAGE
is the result of calling snprintf(p_format, ...)
and the number of character varies.For example: 12:23:34 WARN: logging.c:27 Warning level message
The maximum length a log message will take is hardcoded to the value set for BJ_MAXIMUM_LOG_LEN
.
A first buffer is filled in with the expansion of the message. This message is truncated to fit the BJ_MAXIMUM_LOG_LEN characters limit entirely. If this limit is already reached, the message is logged as-is.
Then, in the order of below priority:
BJ_CONFIG_LOG_COLOR
is set and but is not enough space for colored source (Debug only), SOURCE
is not colored.BJ_CONFIG_LOG_COLOR
is set and but is not enough space for colored level, LEVEL
is not colored.TIME
, it is not present.SOURCE
(Debug only), it is not present.LEVEL
, it is not present.