作为一名学习程序的学生,在学习中编写过的代码、程序,没有日志功能,刚开始的时候,完全不知道日志的使用有什么意义,感觉特别鸡肋,出现问题,我自己调试一下完全都可以解决的事情,为什么要通过日志来输出。直到后来,才觉得以前的自己好 xx(你懂得)。最近写了一个注入的程序,你将Dll注入目标程序,你完全不能调试你的代码,更何况你想去修改你的代码,简直异想天开。在解决检查获取的来数据是否有效的时候,我想了很多种方法,但最后也觉得就是用日志输出,才是最方便的。
我在网上也找了好多方法,这里我就提供一个开源项目的日志使用方法。
Easylogging++
这是一个开源的项目,使用也很简单,目前只学习了简单的使用,其他的更高级的使用方式,还尚未了解到。
下面是个简单的使用例子。
- 包含easylogging++.h头文件
- 使用宏 INITIALIZE_EASYLOGGINGPP 初始化
- 使用宏 LOG(INFO) 开始日志记录
// SubTest.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include<Windows.h>
#include<iostream>
#include<tchar.h>
#include"..\\log\easylogging++.h"
INITIALIZE_EASYLOGGINGPP
void _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
LOG(TRACE) << "********** trace log ";
LOG(DEBUG) << "********** debug log ";
LOG(ERROR) << "********** error log ";
LOG(WARNING) << "********** warning log ";
LOG(INFO) << "********** info log ";
system("pause");
}
这是控制台输出的情况:
2020-05-12 16:24:24,316 INFO [default] My first info log using default logger
2020-05-12 16:24:24,318 TRACE [default] [int __cdecl wmain(int,wchar_t *[],wchar_t *[])] [m:\test\subtest\subtest.cpp:23] ********** trace log
2020-05-12 16:24:24,319 DEBUG [default] [DELL@MATTHEW] [int __cdecl wmain(int,wchar_t *[],wchar_t *[])] [m:\test\subtest\subtest.cpp:24] ********** debug log
2020-05-12 16:24:24,319 ERROR [default] ********** error log
2020-05-12 16:24:24,320 WARNING [default] ********** warning log
2020-05-12 16:24:24,320 INFO [default] ********** info log
请按任意键继续. . .
这是日志输出情况:
这个开源库,也支持自定义的格式。
log.conf 是自己在目录下创建的一个文件。
// SubTest.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include<Windows.h>
#include<iostream>
#include<tchar.h>
#include"..\\log\easylogging++.h"
INITIALIZE_EASYLOGGINGPP
void _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
el::Configurations conf("log.conf");
el::Loggers::reconfigureAllLoggers(conf);
LOG(INFO) << "My first info log using default logger";
LOG(TRACE) << "********** trace log ";
LOG(DEBUG) << "********** debug log ";
LOG(ERROR) << "********** error log ";
LOG(WARNING) << "********** warning log ";
LOG(INFO) << "********** info log ";
system("pause");
}
这是控制台输出的情况:
2020-05-12 16:27:39,267 INFO [default] My first info log using default logger
2020-05-12 16:27:39,269 TRACE [default] ********** trace log
2020-05-12 16:27:39,269 DEBUG [default] ********** debug log
2020-05-12 16:27:39,269 ERROR [default] ********** error log
2020-05-12 16:27:39,269 WARNING [default] ********** warning log
2020-05-12 16:27:39,270 INFO [default] ********** info log
这是日志输出情况: