前言
日志在项目中定位bug的根源
起着重要的作用。
0x0 下载代码
https://github.com/victronenergy/QsLog.git
0x1 用VS2019打开.pro文件,配置项目类型
这里的属性需要和实际使用的项目
保持一致
,否则会造成程序崩溃
。
0x2 找到这两个文件以及头文件,放在电脑上的一个文件夹中
0x3 在项目中进行路径配置
第二个步骤也可以在链接器→常规→附加库目录
进行路径的添加
0x4 在需要使用的项目中添加必要的头文件,初始化代码,销毁代码
#include "QsLogTest.h"
#include <QsLog.h>
#include <QFileInfo>
#include <QSettings>
#include <QDir>
using namespace QsLogging;
QsLogTest::QsLogTest(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
QString m_AppPath = QApplication::applicationDirPath();
QString iniFullPath = m_AppPath + INI_FILE_NAME;
QSettings* iniFile = new QSettings(iniFullPath, QSettings::IniFormat);
int logLevel = iniFile->value(INI_KEY_NAME).toInt();
if (logLevel == 0) {
iniFile->setValue(INI_KEY_NAME, 1);
}
else {
logLevel = iniFile->value(INI_KEY_NAME).toInt();
}
logLevel = iniFile->value(INI_KEY_NAME).toInt();
//Initialize logging mechanism
Logger& logger = Logger::instance();
logger.setLoggingLevel((Level)logLevel);
/*Add stdout as destination*/
DestinationPtr debugDestination(DestinationFactory::MakeDebugOutputDestination());
logger.addDestination(debugDestination);
/*Add files as destination*/
const QString sLogPath(QDir(m_AppPath).filePath(LOG_FILE_NAME));
DestinationPtr fileDestination(DestinationFactory::MakeFileDestination(sLogPath, EnableLogRotation, MaxSizeBytes(512 * 1024), MaxOldLogCount(5)));
logger.addDestination(fileDestination);
// Add QObject as destination
//DestinationPtr objectDestination(DestinationFactory::MakeFunctorDestination(this, SLOT(writeLog(QString, int))));
//logger.addDestination(objectDestination);
delete iniFile;
}
QsLogTest::~QsLogTest()
{
QsLogging::Logger::destroyInstance();
}
0x5 把QsLog2.dll放在Release文件夹中,否则会运行失败
0x5.1 静态库调用环境配置
VC++目录→
包含目录
:告诉编译器去这个地方找头文件
链接器→常规→
附加库目录
:告诉编译器去这个地方找lib文件
输入→
附加依赖项
:告诉编译器lib库文件的名字