This repository contains a C++ implementation of the Google logging module.

Glog源码下载

访问Glog官网:https://github.com/google/glog

Glog动态库调用

demo加载动态库

demo.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
typedef int (*FuncType_DtuDrvInit)(void* param);

void* LoadDLL(const char* dllname) {
void* ret = dlopen(dllname, RTLD_GLOBAL | RTLD_LAZY);
const char* error = dlerror();
if (error) {
printf("dlopen(%s) error(%s) \r\n", dllname, error);
}
return ret;
}

void* GetDLLAPI(void* Handle, const char* ApiName) {
void* ret = (void*)dlsym(Handle, ApiName);
const char* error = dlerror();
if (error) {
printf("dlsym(%s) error(%s) \r\n", ApiName, error);
}
return ret;
}

int UnLoadDLL(void* Handle) {
return dlclose(Handle);
}

int main(int argc, char* argv[]) {
LoadDLL("libpthread.so.0");
LoadDLL("libglog.so.0");
LoadDLL("libjsoncpp.so");
LoadDLL("./libboost_system.so.1.68.0");
LoadDLL("./libboost_regex.so.1.68.0");
LoadDLL("./libftp.so.2.0");

void* handle = LoadDLL("./libdtu.so.1");
FuncType_DtuDrvInit DtuDrvInit = GetDLLAPI(handle, "DtuDrvInit");

DTU_PARAM_T param;
strcpy(param.config_path, "./dtu.json");
DtuDrvInit(&param);

while (1) {
sleep(1);
}

exit:
UnLoadDLL(handle);

return 0;
}

Glog初始化

GlogConfigApi.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Init glog
google::InitGoogleLogging("Project name");
// INFO WARNING ERROR FATAL
if (data_center->log_level_ == "INFO")
FLAGS_stderrthreshold = google::GLOG_INFO;
else if (data_center->log_level_ == "WARNING")
FLAGS_stderrthreshold = google::GLOG_WARNING;
else if (data_center->log_level_ == "ERROR")
FLAGS_stderrthreshold = google::GLOG_ERROR;
else if (data_center->log_level_ == "FATAL")
FLAGS_stderrthreshold = google::GLOG_FATAL;
else
FLAGS_stderrthreshold = google::GLOG_INFO;

FLAGS_log_dir = Glog save path;
FLAGS_logbufsecs = 0; // Print log in real time
FLAGS_max_log_size = 6; // Max log size 6MB
FLAGS_colorlogtostderr = true;