⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logger.c

📁 Linux系统下采用Gtk 2图形库开发的代理搜索验证软件.采用Glib线程池,多线程并发搜索验证,支持国际化,具备中文英文两种语言.
💻 C
字号:
/*************************************************************************** *            logger.c * *  Fri Aug 24 09:51:29 2007 *  Copyright  2007  hunbuso *  hunbuso@gmail.com ****************************************************************************/#include "main.h"#include "logger.h"#define LOG_ALL_LEVELS \    (G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION)typedef struct _LogHandler {    gchar *domain;    GLogLevelFlags level;    guint id;} LogHandler;static LogHandler log_handlers[] = {    {NULL, LOG_ALL_LEVELS},    {"Glib", LOG_ALL_LEVELS},    {"Gtk", LOG_ALL_LEVELS}};static guint log_handler_count = G_N_ELEMENTS(log_handlers);static FILE *proxyfish_log_file = NULL;G_LOCK_DEFINE_STATIC(proxyfish_log_file);static const gchar *get_timestamp_str(void){    time_t current_time = time(NULL);    return ctime(&current_time);}static size_tget_filesize(const gchar *filename){    struct stat info;    if (stat(filename, &info))        return 0;    return info.st_size;}static voidlog_to_file(const gchar * domain, GLogLevelFlags level,            const gchar * message, gpointer data){    FILE *file = (FILE *) data;    g_return_if_fail(file != NULL);    g_return_if_fail(message != NULL);    G_LOCK(proxyfish_log_file);    if (domain)        g_fprintf(file, "(%s) ", domain);    g_fprintf(file, "%s\n", message);    fflush(file);    G_UNLOCK(proxyfish_log_file);}gbooleanproxyfish_logger_start(const gchar * filename){    guint i;    g_return_val_if_fail(filename != NULL, FALSE);    /* 如果文件大于最大值则剪切 */    if (get_filesize(filename) < PROXYFISH_LOGGER_FILE_MAX_SIZE)        proxyfish_log_file = fopen(filename, "at");    else        proxyfish_log_file = fopen(filename, "w+t");    if (!proxyfish_log_file) {        g_printerr(_("Unable to create log file (%s)!\n"), filename);        return FALSE;    }    for (i = 0; i < log_handler_count; i++) {        log_handlers[i].id = g_log_set_handler(log_handlers[i].domain,                                               log_handlers[i].level,                                               log_to_file, proxyfish_log_file);    }    g_message("\n** LOGGING STARTED AT %s", get_timestamp_str());    return TRUE;}voidproxyfish_logger_stop(void){    guint i;    if (!proxyfish_log_file)        return;    g_message("\n** LOGGING STOPPED AT %s", get_timestamp_str());    for (i = 0; i < log_handler_count; i++)        g_log_remove_handler(log_handlers[i].domain, log_handlers[i].id);    fclose(proxyfish_log_file);    proxyfish_log_file = NULL;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -