spice日志提取

来源:互联网 发布:java文本相似度 tfidf 编辑:程序博客网 时间:2024/05/19 12:38

编写其他工程,可以借鉴。

#include <stdarg.h>#include <stdio.h>#include <glib.h>#define spice_info(format, ...) G_STMT_START {                         \    spice_log(G_LOG_LEVEL_INFO,  __FUNCTION__, "" format, ## __VA_ARGS__); \} G_STMT_END#define spice_debug(format, ...) G_STMT_START {                         \    spice_log(G_LOG_LEVEL_DEBUG,  __FUNCTION__, "" format, ## __VA_ARGS__); \} G_STMT_END#define spice_warning(format, ...) G_STMT_START {                       \    spice_log(G_LOG_LEVEL_WARNING,  __FUNCTION__, "" format, ## __VA_ARGS__); \} G_STMT_END#define spice_critical(format, ...) G_STMT_START {                          \    spice_log(G_LOG_LEVEL_CRITICAL,  __FUNCTION__, "" format, ## __VA_ARGS__); \} G_STMT_END#define spice_error(format, ...) G_STMT_START {                         \    spice_log(G_LOG_LEVEL_ERROR,  __FUNCTION__, "" format, ## __VA_ARGS__); \} G_STMT_ENDstatic int glib_debug_level = INT_MAX;static int abort_mask = 0;static void spice_logv(const char *log_domain,                       GLogLevelFlags log_level,                       const char *function,                       const char *format,                       va_list args){    GString *log_msg;    if ((log_level & G_LOG_LEVEL_MASK) > glib_debug_level) {        return; // do not print anything    }    log_msg = g_string_new(NULL);    if ( function) {        g_string_append_printf(log_msg, "%s: ",  function);    }    if (format) {        g_string_append_vprintf(log_msg, format, args);    }    g_log(log_domain, log_level, "%s", log_msg->str);    g_string_free(log_msg, TRUE);    /*    if ((abort_mask & log_level) != 0) {        spice_backtrace();        abort();    }    */}void spice_log(GLogLevelFlags log_level,               const char *function,               const char *format,               ...){    va_list args;    va_start (args, format);    spice_logv (G_LOG_DOMAIN, log_level, function, format, args);    va_end (args);}int main(){    spice_info("this is info");    spice_debug("this is debug");    spice_warning("this is warning");    spice_critical("this is critical");    //spice_error("this is error");    return 0;}

编译&运行结果
[root@net test]# gcc log.c -o log -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -lglib-2.0
[root@allinone01 test]# ./log

* (process:15224): WARNING *: main: this is warning

* (process:15224): CRITICAL *: main: this is critical
[root@net test]#

原创粉丝点击