最近写代码的时候,想找一个好用点的日志库,选来选取发现都差不多,最后决定自己写一个简单的日志库,于是就有了clog
该日志库使用存c实现,源码发布在链接:https://gitee.com/doublebullet/c_log
使用非常简单
#ifdef WINDOWS
#include <windows.h>
#include <time.h>
#include <io.h>
#include <direct.h>
#include "clog.h"
DWORD WINAPI Funa(LPVOID lpParamter)
{
while (1)
{
CLOG_DEBUG("clog_debug test clog_debug test clog_debug test clog_debug test ");
CLOG_INFO("clog_info test :%d", 2);
CLOG_WARNING("clog_warning :%s", "test");
CLOG_ERROR("clog_error:%f", 0.45);
Sleep(5);
}
return 0L;
}
int amain()
{
int i = 0;
for (int i = 0; i < 128; i++)
{
HANDLE hThread = CreateThread(NULL, 0, Funa, NULL, 0, NULL);
CloseHandle(hThread);
}
while (1)
{
//if (i++ == 1000)
//{
// /*
// * //可以设置的类型
// #define OUT_FILE_SIZE 0 //输出日志文件大小,单位kb 默认:10240KB 10MB
// #define OUT_LEVEL 1 //输出日志等级 0:全部输出 1:info以上的日志 2:warning以上的日志 3:只输出error 默认:0
// #define OUT_PID 2 //是否输出进程号 0为不输出 1为输出 默认:输出
// #define OUT_TID 3 //是否输出线程号 0为不输出 1为输出 默认:输出
// #define OUT_FILE_NAME 4 //是否输出文件名 0为不输出 1为输出 默认:输出
// #define OUT_FUNC_NAME 5 //是否输出函数名 0为不输出 1为输出 默认:输出
// #define OUT_LINE 6 //是否输出行号 0为不输出 1为输出 默认:输出
// #define OUT_STDOUT 7 //是否输出到控制台(printf) 0为不输出 1为输出 默认:输出
// #define OUT_LOG_FILE 8 //是否输出到日志文件 0为不输出 1为输出 默认:输出
// #define OUT_FILE_SUM 9 //输出文件总数 默认10个文件
// */
// clog_set(OUT_FILE_SIZE, 1);
// clog_set(OUT_LEVEL, 3);
// clog_set(OUT_PID, 0);
// clog_set(OUT_TID, 0);
// clog_set(OUT_FILE_NAME, 0);
// clog_set(OUT_LINE, 0);
// clog_set(OUT_FILE_SUM, 30);
//}
//if (i == 2000)
//{
// clog_set(OUT_FILE_SIZE, 2);
// clog_set(OUT_LEVEL, 1);
// clog_set(OUT_PID, 1);
// clog_set(OUT_TID, 1);
// clog_set(OUT_FILE_NAME, 1);
// clog_set(OUT_LINE, 1);
// clog_set(OUT_FILE_SUM, 10 );
//}
CLOG_DEBUG("clog_debug test clog_debug test clog_debug test clog_debug test ");
CLOG_INFO("clog_info test :%d", 2);
CLOG_WARNING("clog_warning :%s", "test");
CLOG_ERROR("clog_error:%f", 0.45);
Sleep(5);
}
return 0;
}
#else
#include <pthread.h>
#include "clog.h"
void* Funa(void* a)
{
while (1)
{
CLOG_DEBUG("clog_debug test clog_debug test clog_debug test clog_debug test ");
CLOG_INFO("clog_info test :%d", 2);
CLOG_WARNING("clog_warning :%s", "test");
CLOG_ERROR("clog_error:%f", 0.45);
usleep(10000);
}
}
int amain()
{
for (int i = 0; i < 128; i++)
{
pthread_t volit_input_id;
pthread_attr_t volit_input_id_a;
pthread_attr_init(&volit_input_id_a);
pthread_attr_setdetachstate(&volit_input_id_a, PTHREAD_CREATE_DETACHED);
if (-1 == pthread_create(&volit_input_id, &volit_input_id_a, Funa, NULL)) {
perror("pthread_create");
exit(1);
}
}
while (1)
{
CLOG_DEBUG("clog_debug test clog_debug test clog_debug test clog_debug test ");
CLOG_INFO("clog_info test :%d", 2);
CLOG_WARNING("clog_warning :%s", "test");
CLOG_ERROR("clog_error:%f", 0.45);
usleep(10000);
}
//Sleep(1000);
return 0;
}
#endif // WINDOWS
int main()
{
clog_set(OUT_FILE_SIZE, 1);
clog_set(OUT_FILE_SUM, 20);
//read_filename("./log");
if (clog_start("./log/test.log","../../../config.ini"))
{
printf("初始化日志库失败\n");
return -1;
}
return amain();
}
如果有什么BUG,可以提出来。欢迎大家使用