使用glib打印日志
时间: 2023-07-20 11:22:50 浏览: 304
在GLib中,可以使用`g_log()`函数来打印日志。`g_log()`函数的原型如下:
```c
void g_log(const gchar *log_domain, GLogLevelFlags log_level, const gchar *format, ...);
```
其中,`log_domain`参数指定日志的域名,`log_level`参数指定日志的级别,`format`参数指定日志的格式,后面可以跟上可变参数列表。
GLib定义了五个日志级别:
- `G_LOG_LEVEL_ERROR`:错误级别
- `G_LOG_LEVEL_CRITICAL`:严重级别
- `G_LOG_LEVEL_WARNING`:警告级别
- `G_LOG_LEVEL_MESSAGE`:消息级别
- `G_LOG_LEVEL_INFO`:信息级别
- `G_LOG_LEVEL_DEBUG`:调试级别
默认情况下,只有等于或高于`G_LOG_LEVEL_WARNING`级别的日志才会被输出。可以通过`g_log_set_handler()`函数来改变日志输出的行为。例如,可以使用以下代码将日志输出到控制台:
```c
#include <glib.h>
void my_log_handler(const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data) {
g_print("%s: %s\n", log_domain, message);
}
int main(void) {
g_log_set_handler(NULL, G_LOG_LEVEL_MASK, my_log_handler, NULL);
g_log(NULL, G_LOG_LEVEL_INFO, "Hello, world!");
return 0;
}
```
上面的代码中,`g_log_set_handler()`函数指定了一个新的日志处理函数`my_log_handler`。该函数将日志输出到控制台。然后,使用`g_log()`函数输出一条日志。由于日志级别为`G_LOG_LEVEL_INFO`,因此该日志将被输出到控制台中。
除了上述示例中的`g_print()`函数外,也可以使用其他输出函数来输出日志,例如`printf()`函数、`fprintf()`函数等。
阅读全文