之前一直提到:未看到过任何详细初始化su_log_t结构体变量的代码。可以说,su_default_log.h代码向我们展示了如何详细初始化su_log文件中申明的su_log_default变量。
su_log_t su_log_default[1] = {
{
sizeof(su_log_t),
"sofia", /* Log name */
"SOFIA_DEBUG", /* Environment variable controlling logging level */
SOFIA_DEBUG_, /* Default level */
SU_LOG_MAX, /* Maximum log level */
0,
default_logger,
NULL
}};
从上述代码可以看出,su_log_default的名称是“sofia”,可使用的日志等级环境变量是SOFIA_DEBUG,缺省日志等级由SOFIA_DEBUG_宏决定。更关键一点是,日志输出函数确定是default_logger。可惜这里还是没看到指定stream。
static void default_logger(void *stream, char const *fmt, va_list ap)
{
FILE *f = stream ? (FILE *)stream : stderr;
vfprintf(f, fmt, ap);
}
由日志输出函数定义可看出,缺省会使用stderr作为输出流。
su_global_log.c文件内主要内容如下:
extern char const