提交 2138e35d 编写于 作者: kl222's avatar kl222

Modify log

上级 fe814339
...@@ -12,7 +12,6 @@ project(FaceRecognizerApp) ...@@ -12,7 +12,6 @@ project(FaceRecognizerApp)
set(SOURCE_FILES set(SOURCE_FILES
FrmDisplay.cpp FrmDisplay.cpp
DlgLog.cpp
main.cpp main.cpp
MainWindow.cpp MainWindow.cpp
FrmRegisterImage.cpp FrmRegisterImage.cpp
...@@ -31,7 +30,6 @@ set(SOURCE_FILES ...@@ -31,7 +30,6 @@ set(SOURCE_FILES
set(HEADER_FILES set(HEADER_FILES
FrmDisplay.h FrmDisplay.h
DlgLog.h
MainWindow.h MainWindow.h
FrmRegisterImage.h FrmRegisterImage.h
FrmRecognizerImage.h FrmRecognizerImage.h
...@@ -49,7 +47,6 @@ set(HEADER_FILES ...@@ -49,7 +47,6 @@ set(HEADER_FILES
set(SOURCE_UI_FILES set(SOURCE_UI_FILES
FrmDisplay.ui FrmDisplay.ui
DlgLog.ui
MainWindow.ui MainWindow.ui
FrmRegisterImage.ui FrmRegisterImage.ui
FrmRecognizerImage.ui FrmRecognizerImage.ui
...@@ -60,16 +57,6 @@ set(SOURCE_UI_FILES ...@@ -60,16 +57,6 @@ set(SOURCE_UI_FILES
FrmBroweFile.ui FrmBroweFile.ui
) )
#翻译
GENERATED_QT_TRANSLATIONS(SOURCES ${SOURCE_FILES}
OUT_QRC TRANSLATIONS_QRC_FILES)
string(TOLOWER ${CMAKE_BUILD_TYPE} BUILD_TYPE)
if(BUILD_TYPE STREQUAL "debug")
LIST(APPEND PRIVATE_DEFINITIONS DEBUG)
LIST(APPEND RCC_FILES
${TRANSLATIONS_QRC_FILES}
)
endif()
add_definitions(-DBUILD_VERSION="${FaceRecognizer_VERSION}") add_definitions(-DBUILD_VERSION="${FaceRecognizer_VERSION}")
add_definitions(-DBUILD_ARCH="${BUILD_ARCH}") add_definitions(-DBUILD_ARCH="${BUILD_ARCH}")
...@@ -87,6 +74,7 @@ ADD_TARGET(NAME ${PROJECT_NAME} ...@@ -87,6 +74,7 @@ ADD_TARGET(NAME ${PROJECT_NAME}
ISWINDOWS ISWINDOWS
VERSION ${FaceRecognizer_VERSION} VERSION ${FaceRecognizer_VERSION}
PRIVATE_DEFINITIONS FaceRecognizer_VERSION="${FaceRecognizer_VERSION}" PRIVATE_DEFINITIONS FaceRecognizer_VERSION="${FaceRecognizer_VERSION}"
FaceRecognizer_REVISION="${FaceRecognizer_REVISION}"
SOURCE_FILES ${SOURCE_FILES} ${HEADER_FILES} ${SOURCE_UI_FILES} ${RCC_FILES} SOURCE_FILES ${SOURCE_FILES} ${HEADER_FILES} ${SOURCE_UI_FILES} ${RCC_FILES}
PRIVATE_LIBS ${QT_LIBRARIES} FaceRecognizer) PRIVATE_LIBS ${QT_LIBRARIES} FaceRecognizer)
...@@ -109,3 +97,22 @@ if(UNIX AND NOT ANDROID) ...@@ -109,3 +97,22 @@ if(UNIX AND NOT ANDROID)
COMPONENT Runtime) COMPONENT Runtime)
endif() endif()
if(Log4Qt_FOUND)
if(NOT EXISTS ${CMAKE_BINARY_DIR}/etc/FaceRecognizer_log4qt.conf)
configure_file(${CMAKE_SOURCE_DIR}/etc/FaceRecognizer_log4qt.conf
${CMAKE_BINARY_DIR}/etc/FaceRecognizer_log4qt.conf
COPYONLY)
endif()
INSTALL(FILES ${CMAKE_SOURCE_DIR}/etc/FaceRecognizer_log4qt.conf
DESTINATION etc
COMPONENT Runtime)
else()
if(NOT EXISTS ${CMAKE_BINARY_DIR}/etc/FaceRecognizer_logqt.ini)
configure_file(${CMAKE_SOURCE_DIR}/etc/FaceRecognizer_logqt.ini
${CMAKE_BINARY_DIR}/etc/FaceRecognizer_logqt.ini
COPYONLY)
endif()
INSTALL(FILES ${CMAKE_SOURCE_DIR}/etc/FaceRecognizer_logqt.ini
DESTINATION etc
COMPONENT Runtime)
endif()
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include "DelegateParamter.h" #include "DelegateParamter.h"
#include "FrmBroweFile.h" #include "FrmBroweFile.h"
#include "Log.h"
#include <QDebug> #include <QDebug>
#include <QEvent> #include <QEvent>
......
/**
@author: Kang Lin<kl222@126.com>
*/
#include "DlgLog.h"
#include "ui_DlgLog.h"
#include <QFile>
CDlgLog::CDlgLog(const QString &szLogFile, QWidget *parent) :
QDialog(parent),
ui(new Ui::CDlgLog)
{
ui->setupUi(this);
m_szFile = szLogFile;
if(!m_szFile.isEmpty())
{
QString szLog;
QFile f(m_szFile);
if(!f.open(QFile::ReadOnly))
return;
szLog = f.readAll();
f.close();
ui->textEdit->append(szLog);
}
}
CDlgLog::~CDlgLog()
{
delete ui;
}
void CDlgLog::on_pbOk_clicked()
{
this->accept();
}
void CDlgLog::on_pbClean_clicked()
{
ui->textEdit->clear();
QFile::remove(m_szFile);
}
/**
@author: Kang Lin<kl222@126.com>
*/
#ifndef DLGLOG_H
#define DLGLOG_H
#include <QDialog>
namespace Ui {
class CDlgLog;
}
class CDlgLog : public QDialog
{
Q_OBJECT
public:
explicit CDlgLog(const QString &szLogFile = QString(),
QWidget *parent = nullptr);
~CDlgLog();
private slots:
void on_pbOk_clicked();
void on_pbClean_clicked();
private:
Ui::CDlgLog *ui;
QString m_szFile;
};
#endif // DLGLOG_H
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>CDlgLog</class>
<widget class="QDialog" name="CDlgLog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Log file</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QTextEdit" name="textEdit">
<property name="enabled">
<bool>true</bool>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pbOk">
<property name="text">
<string>Ok(&amp;O)</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pbClean">
<property name="text">
<string>Clean(&amp;C)</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include "FrmPara.h" #include "FrmPara.h"
#include "ui_FrmPara.h" #include "ui_FrmPara.h"
#include "Log.h"
#include "FactoryFace.h" #include "FactoryFace.h"
#include "DelegateParamter.h" #include "DelegateParamter.h"
#include <QDebug> #include <QDebug>
......
...@@ -6,13 +6,15 @@ ...@@ -6,13 +6,15 @@
#include "ui_FrmRecognizerVideo.h" #include "ui_FrmRecognizerVideo.h"
#include "FactoryFace.h" #include "FactoryFace.h"
#include "Performance.h" #include "Performance.h"
#include "Log.h"
#include <QFont> #include <QFont>
#include <QPainter> #include <QPainter>
#include <QDebug> #include <QDebug>
#include <QMutexLocker> #include <QMutexLocker>
#include <stdexcept> #include <stdexcept>
#include <QLoggingCategory>
Q_LOGGING_CATEGORY(logVideo, "Video")
CFrmRecognizerVideo::CFrmRecognizerVideo(QWidget *parent) : CFrmRecognizerVideo::CFrmRecognizerVideo(QWidget *parent) :
QWidget(parent), QWidget(parent),
...@@ -29,7 +31,7 @@ CFrmRecognizerVideo::CFrmRecognizerVideo(QWidget *parent) : ...@@ -29,7 +31,7 @@ CFrmRecognizerVideo::CFrmRecognizerVideo(QWidget *parent) :
CFrmRecognizerVideo::~CFrmRecognizerVideo() CFrmRecognizerVideo::~CFrmRecognizerVideo()
{ {
qDebug() << "CFrmRecognizerVideo::~CFrmRecognizerVideo()"; qDebug(logVideo) << "CFrmRecognizerVideo::~CFrmRecognizerVideo()";
delete ui; delete ui;
} }
...@@ -64,7 +66,7 @@ void CFrmRecognizerVideo::slotDisplay(const QImage &image) ...@@ -64,7 +66,7 @@ void CFrmRecognizerVideo::slotDisplay(const QImage &image)
{ {
if(isHidden() || !m_pFace->bIsValid()) if(isHidden() || !m_pFace->bIsValid())
{ {
LOG_MODEL_ERROR("CFrmRecognizerVideo", "isHidden() || !m_pFace"); qCritical(logVideo) << "CFrmRecognizerVideo:" << "isHidden() || !m_pFace";
return; return;
} }
...@@ -101,11 +103,11 @@ void CFrmRecognizerVideo::slotDisplay(const QImage &image) ...@@ -101,11 +103,11 @@ void CFrmRecognizerVideo::slotDisplay(const QImage &image)
ui->wgDisplay->slotDisplay(img); ui->wgDisplay->slotDisplay(img);
if(bRecognize) if(bRecognize)
{ {
//qDebug() << "emit sigRecognize(image, faces); start"; //qDebug(logVideo) << "emit sigRecognize(image, faces); start";
QMutexLocker locker(&m_Mutex); QMutexLocker locker(&m_Mutex);
emit sigRecognize(image, faces); emit sigRecognize(image, faces);
PERFORMANCE_ADD_TIME(CFrmRecognizerVideo, "sigRecognize") PERFORMANCE_ADD_TIME(CFrmRecognizerVideo, "sigRecognize")
//qDebug() << "emit sigRecognize(image, faces); end"; //qDebug(logVideo) << "emit sigRecognize(image, faces); end";
} }
if(faces.size() > 1) if(faces.size() > 1)
{ {
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include "FrmRegisterImage.h" #include "FrmRegisterImage.h"
#include "ui_FrmRegisterImage.h" #include "ui_FrmRegisterImage.h"
#include "Log.h"
#include "RabbitCommonDir.h" #include "RabbitCommonDir.h"
#include <QMessageBox> #include <QMessageBox>
......
...@@ -19,8 +19,6 @@ ...@@ -19,8 +19,6 @@
#include "ManageRegisterVideo.h" #include "ManageRegisterVideo.h"
#include "ManageRecognizerVideo.h" #include "ManageRecognizerVideo.h"
#include "FactoryFace.h" #include "FactoryFace.h"
#include "Log.h"
#include "DlgLog.h"
#include <QIcon> #include <QIcon>
#include <QCameraInfo> #include <QCameraInfo>
...@@ -35,6 +33,9 @@ ...@@ -35,6 +33,9 @@
#include <QStandardPaths> #include <QStandardPaths>
#include <QDockWidget> #include <QDockWidget>
#include <QScreen> #include <QScreen>
#include <QLoggingCategory>
Q_LOGGING_CATEGORY(log, "main")
MainWindow::MainWindow(QWidget *parent) : MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent), QMainWindow(parent),
...@@ -42,10 +43,7 @@ MainWindow::MainWindow(QWidget *parent) : ...@@ -42,10 +43,7 @@ MainWindow::MainWindow(QWidget *parent) :
m_pCamera(nullptr) m_pCamera(nullptr)
{ {
ui->setupUi(this); ui->setupUi(this);
CLog::Instance()->SetSaveFile(QStandardPaths::writableLocation(
QStandardPaths::TempLocation)
+ QDir::separator()
+ qApp->applicationName() + ".log");
//Init menu //Init menu
ui->actionStart->setIcon(QIcon(":/image/Start")); ui->actionStart->setIcon(QIcon(":/image/Start"));
ui->actionStart->setText(tr("Start")); ui->actionStart->setText(tr("Start"));
...@@ -78,8 +76,7 @@ MainWindow::MainWindow(QWidget *parent) : ...@@ -78,8 +76,7 @@ MainWindow::MainWindow(QWidget *parent) :
ui->toolBar->addWidget(cmbCameras); ui->toolBar->addWidget(cmbCameras);
QList<QCameraInfo> cameras = QCameraInfo::availableCameras(); QList<QCameraInfo> cameras = QCameraInfo::availableCameras();
foreach (const QCameraInfo &cameraInfo, cameras) { foreach (const QCameraInfo &cameraInfo, cameras) {
// LOG_MODEL_DEBUG("MainWindows", "Camer name: %s", //qDebug(log) << "Camer name:" << cameraInfo.deviceName();
// cameraInfo.deviceName().toStdString().c_str());
cmbCameras->addItem(cameraInfo.description()); cmbCameras->addItem(cameraInfo.description());
} }
...@@ -166,14 +163,14 @@ void MainWindow::slotCameraChanged(int index) ...@@ -166,14 +163,14 @@ void MainWindow::slotCameraChanged(int index)
m_pCamera->load(); m_pCamera->load();
qInfo() << "Camera support:"; qInfo(log) << "Camera support:";
qInfo() << "Resolutions:" << m_pCamera->supportedViewfinderResolutions(m_pCamera->viewfinderSettings()); qInfo(log) << "Resolutions:" << m_pCamera->supportedViewfinderResolutions(m_pCamera->viewfinderSettings());
QList<QCamera::FrameRateRange> ranges = m_pCamera->supportedViewfinderFrameRateRanges(); QList<QCamera::FrameRateRange> ranges = m_pCamera->supportedViewfinderFrameRateRanges();
for(auto &rang: ranges) for(auto &rang: ranges)
{ {
qInfo() << "Frame rate range:" << rang.maximumFrameRate << rang.maximumFrameRate; qInfo(log) << "Frame rate range:" << rang.maximumFrameRate << rang.maximumFrameRate;
} }
qInfo() << "Pixel formate:" << m_pCamera->supportedViewfinderPixelFormats(m_pCamera->viewfinderSettings()); qInfo(log) << "Pixel formate:" << m_pCamera->supportedViewfinderPixelFormats(m_pCamera->viewfinderSettings());
// viewfinderSettings.setResolution(640, 480); // viewfinderSettings.setResolution(640, 480);
// viewfinderSettings.setMinimumFrameRate(10.0); // viewfinderSettings.setMinimumFrameRate(10.0);
...@@ -181,11 +178,11 @@ void MainWindow::slotCameraChanged(int index) ...@@ -181,11 +178,11 @@ void MainWindow::slotCameraChanged(int index)
// m_pCamera->setViewfinderSettings(viewfinderSettings); // m_pCamera->setViewfinderSettings(viewfinderSettings);
m_pCamera->unload(); m_pCamera->unload();
qInfo() << "Current:"; qInfo(log) << "Current:";
qInfo() << "Resolutions:" << viewfinderSettings.resolution(); qInfo(log) << "Resolutions:" << viewfinderSettings.resolution();
qInfo() << "Frame rate:" << viewfinderSettings.minimumFrameRate() << viewfinderSettings.maximumFrameRate(); qInfo(log) << "Frame rate:" << viewfinderSettings.minimumFrameRate() << viewfinderSettings.maximumFrameRate();
qInfo() << "Pixel formate:" << viewfinderSettings.pixelFormat(); qInfo(log) << "Pixel formate:" << viewfinderSettings.pixelFormat();
qInfo() << "" << viewfinderSettings.pixelAspectRatio(); qInfo(log) << "" << viewfinderSettings.pixelAspectRatio();
//*/ //*/
...@@ -206,7 +203,7 @@ void MainWindow::slotCameraChanged(int index) ...@@ -206,7 +203,7 @@ void MainWindow::slotCameraChanged(int index)
// focusMode = QCameraFocus::MacroFocus; // focusMode = QCameraFocus::MacroFocus;
// else // else
// focusMode = QCameraFocus::ManualFocus; // focusMode = QCameraFocus::ManualFocus;
LOG_MODEL_DEBUG("MainWindow", "focusMode:0x%x", focusMode); qDebug(log) << "focusMode:" << focusMode;
focus->setFocusMode(focusMode); focus->setFocusMode(focusMode);
focus->setFocusPointMode(QCameraFocus::FocusPointAuto); focus->setFocusPointMode(QCameraFocus::FocusPointAuto);
...@@ -369,13 +366,13 @@ int MainWindow::CamerOrientation(int index) ...@@ -369,13 +366,13 @@ int MainWindow::CamerOrientation(int index)
int screenAngle = 0; int screenAngle = 0;
#if (QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)) #if (QT_VERSION >= QT_VERSION_CHECK(5, 2, 0))
qDebug() << "orientation:" << screen->orientation() qDebug(log) << "orientation:" << screen->orientation()
<< screen->nativeOrientation() << screen->nativeOrientation()
<< screen->orientationUpdateMask(); << screen->orientationUpdateMask();
screenAngle = screen->angleBetween(screen->nativeOrientation(), screenAngle = screen->angleBetween(screen->nativeOrientation(),
screen->orientation()); screen->orientation());
#endif #endif
qDebug() << "screenAngle:" << screenAngle qDebug(log) << "screenAngle:" << screenAngle
<< "camer orientation:" << cameraInfo.orientation(); << "camer orientation:" << cameraInfo.orientation();
int rotation; int rotation;
if (cameraInfo.position() == QCamera::BackFace) { if (cameraInfo.position() == QCamera::BackFace) {
...@@ -385,8 +382,8 @@ int MainWindow::CamerOrientation(int index) ...@@ -385,8 +382,8 @@ int MainWindow::CamerOrientation(int index)
rotation = (360 - cameraInfo.orientation() + screenAngle) % 360; rotation = (360 - cameraInfo.orientation() + screenAngle) % 360;
} }
int a = cameraInfo.orientation(); int a = cameraInfo.orientation();
LOG_MODEL_DEBUG("MainWindow", "Camer angle: %d; %d", a, rotation); qDebug(log) << "Camer angle:" << a << rotation;
qDebug() << "orientation1:" << a << rotation; qDebug(log) << "orientation1:" << a << rotation;
return rotation; return rotation;
} }
...@@ -394,9 +391,9 @@ void MainWindow::slotScreenOrientationChanged(Qt::ScreenOrientation orientation) ...@@ -394,9 +391,9 @@ void MainWindow::slotScreenOrientationChanged(Qt::ScreenOrientation orientation)
{ {
QScreen *screen = QGuiApplication::primaryScreen(); QScreen *screen = QGuiApplication::primaryScreen();
#if (QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)) #if (QT_VERSION >= QT_VERSION_CHECK(5, 2, 0))
qDebug() << "slotScreenOrientationChanged:" << orientation qDebug(log) << "slotScreenOrientationChanged:" << orientation
<<screen->nativeOrientation() <<screen->nativeOrientation()
<< screen->orientation(); << screen->orientation();
#endif #endif
} }
...@@ -482,6 +479,7 @@ void MainWindow::on_actionAbout_A_triggered() ...@@ -482,6 +479,7 @@ void MainWindow::on_actionAbout_A_triggered()
about.m_AppIcon = QImage(":/image/FaceRecognizer"); about.m_AppIcon = QImage(":/image/FaceRecognizer");
about.m_szHomePage = "https://github.com/KangLin/FaceRecognizer"; about.m_szHomePage = "https://github.com/KangLin/FaceRecognizer";
about.m_szCopyrightStartTime = "2019"; about.m_szCopyrightStartTime = "2019";
about.m_szVersionRevision = FaceRecognizer_REVISION;
if(about.isHidden()) if(about.isHidden())
#if defined (Q_OS_ANDROID) #if defined (Q_OS_ANDROID)
about.showMaximized(); about.showMaximized();
...@@ -551,7 +549,7 @@ int MainWindow::createDockPerameters() ...@@ -551,7 +549,7 @@ int MainWindow::createDockPerameters()
m_Paramter = QSharedPointer<CFrmPara>(new CFrmPara(dock)); m_Paramter = QSharedPointer<CFrmPara>(new CFrmPara(dock));
if(!m_Paramter) if(!m_Paramter)
{ {
LOG_MODEL_ERROR("MainWindow", "new CFrmPara fail"); qCritical(log) << "new CFrmPara fail";
return -1; return -1;
} }
dock->setWidget(m_Paramter.data()); dock->setWidget(m_Paramter.data());
......
...@@ -4,7 +4,10 @@ ...@@ -4,7 +4,10 @@
#include "RecognizerThread.h" #include "RecognizerThread.h"
#include "RecognizerVideo.h" #include "RecognizerVideo.h"
#include "Log.h"
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(log)
CRecognizerThread::CRecognizerThread(CManageRecognizerVideo *parent) : QThread() CRecognizerThread::CRecognizerThread(CManageRecognizerVideo *parent) : QThread()
{ {
...@@ -13,13 +16,12 @@ CRecognizerThread::CRecognizerThread(CManageRecognizerVideo *parent) : QThread() ...@@ -13,13 +16,12 @@ CRecognizerThread::CRecognizerThread(CManageRecognizerVideo *parent) : QThread()
CRecognizerThread::~CRecognizerThread() CRecognizerThread::~CRecognizerThread()
{ {
LOG_MODEL_DEBUG("RecognizerThread", "CRecognizerThread::~CRecognizerThread"); qDebug(log) << "CRecognizerThread::~CRecognizerThread";
} }
void CRecognizerThread::run() void CRecognizerThread::run()
{ {
LOG_MODEL_DEBUG("RecognizerThread", "CRecognizerThread::run():%d", qDebug(log) << "CRecognizerThread::run():" << QThread::currentThreadId();
QThread::currentThreadId());
CRecognizerVideo recognizer; CRecognizerVideo recognizer;
bool check = connect(m_pManageRecognizerVideo, SIGNAL(sigRecognize(const QImage&, const QVector<CTracker::strFace> &)), bool check = connect(m_pManageRecognizerVideo, SIGNAL(sigRecognize(const QImage&, const QVector<CTracker::strFace> &)),
&recognizer, SLOT(slotRecognize(const QImage &, const QVector<CTracker::strFace> &))); &recognizer, SLOT(slotRecognize(const QImage &, const QVector<CTracker::strFace> &)));
......
...@@ -3,11 +3,12 @@ ...@@ -3,11 +3,12 @@
*/ */
#include "RecognizerVideo.h" #include "RecognizerVideo.h"
#include "Log.h"
#include "Performance.h" #include "Performance.h"
#include <QtDebug>
#include <QThread> #include <QThread>
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(logVideo)
static int gIdQMapIntQString = qRegisterMetaType<QMap<int,QString> >(); static int gIdQMapIntQString = qRegisterMetaType<QMap<int,QString> >();
CRecognizerVideo::CRecognizerVideo(QObject *parent) : QObject(parent) CRecognizerVideo::CRecognizerVideo(QObject *parent) : QObject(parent)
...@@ -29,14 +30,14 @@ void CRecognizerVideo::slotRecognize(const QImage &image, const QVector<CTracker ...@@ -29,14 +30,14 @@ void CRecognizerVideo::slotRecognize(const QImage &image, const QVector<CTracker
"Mark points:" + QString::number(points.size())) "Mark points:" + QString::number(points.size()))
if(points.isEmpty()) if(points.isEmpty())
{ {
LOG_MODEL_ERROR("CRecognizerVideo", "points is empty"); qCritical(logVideo) << "points is empty";
continue; continue;
} }
qint64 index = pFace->GetRecognizer()->Query(image, face.rect); qint64 index = pFace->GetRecognizer()->Query(image, face.rect);
PERFORMANCE_ADD_TIME(CRecognizerVideo, "Query") PERFORMANCE_ADD_TIME(CRecognizerVideo, "Query")
if(-1 == index) if(-1 == index)
{ {
LOG_MODEL_ERROR("CRecognizerVideo", "pid[%d] don't query", face.pid); qCritical(logVideo) << "pid[" << face.pid << "] don't query";
continue; continue;
} }
CDataRegister data; CDataRegister data;
......
...@@ -15,12 +15,10 @@ ...@@ -15,12 +15,10 @@
#include "FrmUpdater/FrmUpdater.h" #include "FrmUpdater/FrmUpdater.h"
#endif #endif
#include "Log.h" Q_DECLARE_LOGGING_CATEGORY(log)
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
LOG_INITIALIZER;
#if (QT_VERSION > QT_VERSION_CHECK(5,6,0)) #if (QT_VERSION > QT_VERSION_CHECK(5,6,0))
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif #endif
...@@ -31,22 +29,22 @@ int main(int argc, char *argv[]) ...@@ -31,22 +29,22 @@ int main(int argc, char *argv[])
app.setApplicationName("FaceRecognizer"); app.setApplicationName("FaceRecognizer");
#ifdef RABBITCOMMON #ifdef RABBITCOMMON
LOG_MODEL_INFO("main", "GetDirApplication:%s", qInfo(log) << "GetDirApplication:"
RabbitCommon::CDir::Instance()->GetDirApplication().toStdString().c_str()); << RabbitCommon::CDir::Instance()->GetDirApplication();
RabbitCommon::CTools::Instance()->Init(); RabbitCommon::CTools::Instance()->Init();
QString szTranslator = RabbitCommon::CDir::Instance()->GetDirTranslations() QString szTranslator = RabbitCommon::CDir::Instance()->GetDirTranslations()
+ "/" + qApp->applicationName() + "/" + qApp->applicationName()
+ "App_" + QLocale::system().name() + ".qm"; + "App_" + QLocale::system().name() + ".qm";
qDebug() << "Translator:" << szTranslator; qDebug(log) << "Translator:" << szTranslator;
QTranslator translator; QTranslator translator;
translator.load(szTranslator); translator.load(szTranslator);
app.installTranslator(&translator); app.installTranslator(&translator);
#endif #endif
app.setApplicationDisplayName(QObject::tr("Face recognizer")); app.setApplicationDisplayName(QObject::tr("Face recognizer"));
#ifdef RABBITCOMMON #ifdef RABBITCOMMON
CFrmUpdater *pUpdate = new CFrmUpdater(); CFrmUpdater *pUpdate = new CFrmUpdater();
pUpdate->SetTitle(QImage(":/image/FaceRecognizer")); pUpdate->SetTitle(QImage(":/image/FaceRecognizer"));
...@@ -58,7 +56,7 @@ int main(int argc, char *argv[]) ...@@ -58,7 +56,7 @@ int main(int argc, char *argv[])
if(f.open(QFile::ReadOnly)) if(f.open(QFile::ReadOnly))
{ {
QString szStyle = f.readAll(); QString szStyle = f.readAll();
qDebug() << "Style:" << szStyle; qDebug(log) << "Style:" << szStyle;
qApp->setStyleSheet(szStyle); qApp->setStyleSheet(szStyle);
f.close(); f.close();
} }
...@@ -66,16 +64,14 @@ int main(int argc, char *argv[]) ...@@ -66,16 +64,14 @@ int main(int argc, char *argv[])
app.addLibraryPath(RabbitCommon::CDir::Instance()->GetDirPlugins()); app.addLibraryPath(RabbitCommon::CDir::Instance()->GetDirPlugins());
MainWindow w; MainWindow w;
#if defined (Q_OS_ANDROID) #if defined (Q_OS_ANDROID)
w.showMaximized(); w.showMaximized();
#else #else
w.show(); w.show();
#endif #endif
int nRet = app.exec(); int nRet = app.exec();
LOG_CLEAN;
return nRet; return nRet;
} }
...@@ -12,34 +12,6 @@ if(POLICY CMP0020) ...@@ -12,34 +12,6 @@ if(POLICY CMP0020)
cmake_policy(SET CMP0020 NEW) cmake_policy(SET CMP0020 NEW)
endif() endif()
SET(FaceRecognizer_VERSION "v0.0.4")
# Find Git Version Patch
IF(EXISTS "${CMAKE_SOURCE_DIR}/.git")
if(NOT GIT)
SET(GIT $ENV{GIT})
endif()
if(NOT GIT)
FIND_PROGRAM(GIT NAMES git git.exe git.cmd)
endif()
IF(GIT)
EXECUTE_PROCESS(
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMAND ${GIT} describe --tags
OUTPUT_VARIABLE GIT_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT GIT_VERSION)
EXECUTE_PROCESS(
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMAND ${GIT} rev-parse --short HEAD
OUTPUT_VARIABLE GIT_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif()
SET(FaceRecognizer_VERSION ${GIT_VERSION})
ENDIF()
ENDIF()
message("FaceRecognizer_VERSION:${FaceRecognizer_VERSION}")
set(VERSION ${FaceRecognizer_VERSION})
if(NOT DEFINED CMAKE_BUILD_TYPE) if(NOT DEFINED CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release") set(CMAKE_BUILD_TYPE "Release")
endif(NOT DEFINED CMAKE_BUILD_TYPE) endif(NOT DEFINED CMAKE_BUILD_TYPE)
...@@ -174,6 +146,13 @@ else() ...@@ -174,6 +146,13 @@ else()
message(" ag:") message(" ag:")
message(FATAL_ERROR " cmake -DRabbitCommon_DIR= ") message(FATAL_ERROR " cmake -DRabbitCommon_DIR= ")
endif() endif()
SET(FaceRecognizer_VERSION "v0.0.4")
GET_VERSION(OUT_VERSION FaceRecognizer_VERSION
OUT_REVISION FaceRecognizer_REVISION)
message("FaceRecognizer_VERSION:${FaceRecognizer_VERSION};FaceRecognizer_REVISION:${FaceRecognizer_REVISION}")
set(VERSION ${FaceRecognizer_VERSION})
add_subdirectory(Src) add_subdirectory(Src)
option(BUILD_APP "Build applaction" ON) option(BUILD_APP "Build applaction" ON)
if(BUILD_APP) if(BUILD_APP)
......
...@@ -38,7 +38,6 @@ set(SOURCE_FILES ...@@ -38,7 +38,6 @@ set(SOURCE_FILES
CameraQtCaptureVideoFrame.cpp CameraQtCaptureVideoFrame.cpp
ImageTool.cpp ImageTool.cpp
ConverFormat.cpp ConverFormat.cpp
Log.cpp
FactoryFace.cpp FactoryFace.cpp
Face.cpp Face.cpp
FaceBase.cpp FaceBase.cpp
...@@ -70,23 +69,11 @@ set(INSTALLHEADER_FILES ...@@ -70,23 +69,11 @@ set(INSTALLHEADER_FILES
set(HEADER_FILES set(HEADER_FILES
${HEADER_FILES} ${HEADER_FILES}
${INSTALLHEADER_FILES} ${INSTALLHEADER_FILES}
Log.h
database/Database.h database/Database.h
database/DataRegister.h database/DataRegister.h
database/TableRegister.h database/TableRegister.h
) )
#翻译
GENERATED_QT_TRANSLATIONS(SOURCES ${SOURCE_FILES}
OUT_QRC TRANSLATIONS_QRC_FILES)
string(TOLOWER ${CMAKE_BUILD_TYPE} BUILD_TYPE)
if(BUILD_TYPE STREQUAL "debug")
LIST(APPEND PRIVATE_DEFINITIONS DEBUG)
LIST(APPEND RCC_FILES
${TRANSLATIONS_QRC_FILES}
)
endif()
string(TOLOWER ${CMAKE_BUILD_TYPE} BUILD_TYPE) string(TOLOWER ${CMAKE_BUILD_TYPE} BUILD_TYPE)
if(BUILD_TYPE STREQUAL "debug") if(BUILD_TYPE STREQUAL "debug")
set(LIBS_DEFINES ${LIBS_DEFINES} DEBUG) set(LIBS_DEFINES ${LIBS_DEFINES} DEBUG)
...@@ -107,7 +94,9 @@ endif() ...@@ -107,7 +94,9 @@ endif()
ADD_TARGET(NAME ${PROJECT_NAME} ADD_TARGET(NAME ${PROJECT_NAME}
VERSION ${FaceRecognizer_VERSION} VERSION ${FaceRecognizer_VERSION}
PRIVATE_DEFINITIONS FaceRecognizer_VERSION="${FaceRecognizer_VERSION}" PRIVATE_DEFINITIONS
FaceRecognizer_VERSION="${FaceRecognizer_VERSION}"
FaceRecognizer_REVISION="${FaceRecognizer_REVISION}"
DEFINITIONS RABBITCOMMON ${LIBS_DEFINES} DEFINITIONS RABBITCOMMON ${LIBS_DEFINES}
SOURCE_FILES ${SOURCE_FILES} ${HEADER_FILES} ${RCC_FILES} SOURCE_FILES ${SOURCE_FILES} ${HEADER_FILES} ${RCC_FILES}
INSTALL_HEADER_FILES "${INSTALLHEADER_FILES}" INSTALL_HEADER_FILES "${INSTALLHEADER_FILES}"
......
#include "Face.h" #include "Face.h"
#include "Log.h"
#include <QLoggingCategory>
Q_LOGGING_CATEGORY(logFace, "Face")
CFace::CFace(QObject *parent) : QObject(parent), CFace::CFace(QObject *parent) : QObject(parent),
m_pDetector(nullptr), m_pDetector(nullptr),
...@@ -12,7 +15,7 @@ CFace::CFace(QObject *parent) : QObject(parent), ...@@ -12,7 +15,7 @@ CFace::CFace(QObject *parent) : QObject(parent),
try { try {
m_pDatabase = new CDatabase(); m_pDatabase = new CDatabase();
} catch (...) { } catch (...) {
LOG_MODEL_ERROR("CFace", "new CDatabase fail"); qCritical(logFace) << "new CDatabase fail";
} }
} }
...@@ -31,7 +34,7 @@ int CFace::Initialize() ...@@ -31,7 +34,7 @@ int CFace::Initialize()
int CFace::Clean() int CFace::Clean()
{ {
LOG_MODEL_DEBUG("CFace", "Clean %s", this->metaObject()->className()); qDebug(logFace) << "Clean" << this->metaObject()->className();
if(m_pDetector) if(m_pDetector)
{ {
...@@ -81,32 +84,32 @@ bool CFace::IsValid() ...@@ -81,32 +84,32 @@ bool CFace::IsValid()
{ {
if(!GetDector()) if(!GetDector())
{ {
LOG_MODEL_ERROR("CFace", "CFace::GetDector is null"); qCritical(logFace) << "CFace::GetDector is null";
return false; return false;
} }
if(!GetTracker()) if(!GetTracker())
{ {
LOG_MODEL_ERROR("CFace", "CFace::GetTracker is null"); qCritical(logFace) << "CFace::GetTracker is null";
return false; return false;
} }
if(!GetLandmarker()) if(!GetLandmarker())
{ {
LOG_MODEL_ERROR("CFace", "CFace::GetLandmarker is null"); qCritical(logFace) << "CFace::GetLandmarker is null";
return false; return false;
} }
if(!GetRecognizer()) if(!GetRecognizer())
{ {
LOG_MODEL_ERROR("CFace", "CFace::GetRecognizer is null"); qCritical(logFace) << "CFace::GetRecognizer is null";
return false; return false;
} }
if(!GetFaceTools()) if(!GetFaceTools())
{ {
LOG_MODEL_ERROR("CFace", "CFace::GetFaceTools is null"); qCritical(logFace) << "CFace::GetFaceTools is null";
return false; return false;
} }
if(!GetDatabase()) if(!GetDatabase())
{ {
LOG_MODEL_ERROR("CFace", "CFace::GetDatabase is null"); qCritical(logFace) << "CFace::GetDatabase is null";
return false; return false;
} }
return true; return true;
......
...@@ -22,7 +22,7 @@ class FACERECOGNIZER_EXPORT CFace : public QObject ...@@ -22,7 +22,7 @@ class FACERECOGNIZER_EXPORT CFace : public QObject
{ {
Q_OBJECT Q_OBJECT
Q_CLASSINFO("Author", "Kang Lin <kl222@126.com>") Q_CLASSINFO("Author", "Kang Lin <kl222@126.com>")
Q_PROPERTY(QString name READ GetName) Q_PROPERTY(QString name READ GetName)
Q_PROPERTY(QString descritp READ GetDescript) Q_PROPERTY(QString descritp READ GetDescript)
Q_PROPERTY(int level READ GetLevel) Q_PROPERTY(int level READ GetLevel)
...@@ -30,7 +30,7 @@ class FACERECOGNIZER_EXPORT CFace : public QObject ...@@ -30,7 +30,7 @@ class FACERECOGNIZER_EXPORT CFace : public QObject
public: public:
explicit CFace(QObject *parent = nullptr); explicit CFace(QObject *parent = nullptr);
virtual ~CFace(); virtual ~CFace();
virtual int Initialize(); virtual int Initialize();
virtual int Clean(); virtual int Clean();
virtual QString GetName(); virtual QString GetName();
...@@ -42,7 +42,7 @@ public: ...@@ -42,7 +42,7 @@ public:
LOWER = -1 LOWER = -1
}; };
virtual int GetLevel(); virtual int GetLevel();
bool IsValid(); bool IsValid();
virtual CDetector* GetDector(); virtual CDetector* GetDector();
......
#include "FaceBase.h" #include "FaceBase.h"
#include "Log.h"
#include "RabbitCommonDir.h" #include "RabbitCommonDir.h"
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(logFace)
CFaceBase::CFaceBase(QObject *parent) : QObject(parent), CFaceBase::CFaceBase(QObject *parent) : QObject(parent),
m_Device(CPU) m_Device(CPU)
{ {
m_szModelPath = RabbitCommon::CDir::Instance()->GetDirData(false) m_szModelPath = RabbitCommon::CDir::Instance()->GetDirData(false)
+ QDir::separator() + "model"; + QDir::separator() + "model";
LOG_MODEL_DEBUG("CParameter", "szPath:%s", m_szModelPath.toStdString().c_str()); qDebug(logFace) << "szPath:" << m_szModelPath;
#if defined(Q_OS_ANDROID) #if defined(Q_OS_ANDROID)
QDir d; QDir d;
if(!d.exists(m_szModelPath)) if(!d.exists(m_szModelPath))
......
#include "FaceTools.h" #include "FaceTools.h"
#include "Log.h"
CFaceTools::CFaceTools(CFace *pFace, QObject *parent) : CFaceBase(parent), CFaceTools::CFaceTools(CFace *pFace, QObject *parent) : CFaceBase(parent),
m_pFace(pFace) m_pFace(pFace)
......
#include "FactoryFace.h" #include "FactoryFace.h"
#include "Log.h"
#ifdef RABBITCOMMON #ifdef RABBITCOMMON
#include <RabbitCommonDir.h> #include <RabbitCommonDir.h>
...@@ -7,7 +6,9 @@ ...@@ -7,7 +6,9 @@
#include <QDebug> #include <QDebug>
#include <QPluginLoader> #include <QPluginLoader>
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(logFace)
CFactoryFace::CFactoryFace(QObject *parent): QObject(parent), CFactoryFace::CFactoryFace(QObject *parent): QObject(parent),
m_CurrentLib(-1), m_CurrentLib(-1),
m_bOnlyUserCurrent(true) m_bOnlyUserCurrent(true)
...@@ -162,37 +163,37 @@ bool CFactoryFace::bIsValid(const QString &szName) ...@@ -162,37 +163,37 @@ bool CFactoryFace::bIsValid(const QString &szName)
{ {
if(!GetFace(szName)) if(!GetFace(szName))
{ {
LOG_MODEL_ERROR("CFactory", "CFactory::GetFace is null"); qCritical(logFace) << "CFactory::GetFace is null";
return false; return false;
} }
if(!GetDector(szName)) if(!GetDector(szName))
{ {
LOG_MODEL_ERROR("CFactory", "CFactory::GetDector is null"); qCritical(logFace) << "CFactory::GetDector is null";
return false; return false;
} }
if(!GetTracker(szName)) if(!GetTracker(szName))
{ {
LOG_MODEL_ERROR("CFactory", "CFactory::GetTracker is null"); qCritical(logFace) << "CFactory::GetTracker is null";
return false; return false;
} }
if(!GetLandmarker(szName)) if(!GetLandmarker(szName))
{ {
LOG_MODEL_ERROR("CFactory", "CFactory::GetLandmarker is null"); qCritical(logFace) << "CFactory::GetLandmarker is null";
return false; return false;
} }
if(!GetRecognizer(szName)) if(!GetRecognizer(szName))
{ {
LOG_MODEL_ERROR("CFactory", "CFactory::GetRecognizer is null"); qCritical(logFace) << "CFactory::GetRecognizer is null";
return false; return false;
} }
if(!GetFaceTools(szName)) if(!GetFaceTools(szName))
{ {
LOG_MODEL_ERROR("CFactory", "CFactory::GetFaceTools is null"); qCritical(logFace) << "CFactory::GetFaceTools is null";
return false; return false;
} }
if(!GetDatabase(szName)) if(!GetDatabase(szName))
{ {
LOG_MODEL_ERROR("CFactory", "CFactory::GetDatabase is null"); qCritical(logFace) << "CFactory::GetDatabase is null";
return false; return false;
} }
return true; return true;
...@@ -401,7 +402,7 @@ int CFactoryFace::FindPlugins(QDir dir, QStringList filters) ...@@ -401,7 +402,7 @@ int CFactoryFace::FindPlugins(QDir dir, QStringList filters)
} }
QStringList files = dir.entryList(filters, QDir::Files | QDir::CaseSensitive); QStringList files = dir.entryList(filters, QDir::Files | QDir::CaseSensitive);
foreach (fileName, files) { foreach (fileName, files) {
//LOG_MODEL_INFO("CFactoryFace", "file name:%s", fileName.toStdString().c_str()); //qInfo(logFace) << "file name:" << fileName;
QString szPlugins = dir.absoluteFilePath(fileName); QString szPlugins = dir.absoluteFilePath(fileName);
QPluginLoader loader(szPlugins); QPluginLoader loader(szPlugins);
QObject *plugin = loader.instance(); QObject *plugin = loader.instance();
...@@ -410,11 +411,12 @@ int CFactoryFace::FindPlugins(QDir dir, QStringList filters) ...@@ -410,11 +411,12 @@ int CFactoryFace::FindPlugins(QDir dir, QStringList filters)
if(pPlugFace) if(pPlugFace)
{ {
RegisterFace(pPlugFace); RegisterFace(pPlugFace);
qInfo(logFace) << "Load plugin:" << pPlugFace->GetName()
<< "; Path:" << szPlugins;
continue; continue;
} }
}else{ }else{
LOG_MODEL_ERROR("CFactoryFace", "load plugin error:%s", qCritical(logFace) << "Load plugin error:" << loader.errorString();
loader.errorString().toStdString().c_str());
} }
} }
......
#include "ImageTool.h" #include "ImageTool.h"
#include "Log.h"
#include "Performance.h" #include "Performance.h"
#if HAVE_LIBYUV #if HAVE_LIBYUV
...@@ -21,6 +21,9 @@ ...@@ -21,6 +21,9 @@
#include <QFile> #include <QFile>
#include <QPainter> #include <QPainter>
#include <QPluginLoader> #include <QPluginLoader>
#include <QLoggingCategory>
Q_LOGGING_CATEGORY(logImageTool, "ImageTool")
CImageTool::CImageTool(QObject *parent) : QObject(parent), m_pConverFormat(nullptr) CImageTool::CImageTool(QObject *parent) : QObject(parent), m_pConverFormat(nullptr)
{ {
...@@ -77,7 +80,7 @@ QImage CImageTool::ConverFormatToRGB888(const QVideoFrame &frame) ...@@ -77,7 +80,7 @@ QImage CImageTool::ConverFormatToRGB888(const QVideoFrame &frame)
#endif #endif
if(QVideoFrame::Format_YUV420P != frame.pixelFormat()) if(QVideoFrame::Format_YUV420P != frame.pixelFormat())
{ {
LOG_MODEL_WARNING("CImageTool", "Please use one of opencv, ffmpeg, libyuv"); qWarning(logImageTool) << "Please use one of opencv, ffmpeg, libyuv";
} }
break; break;
} }
...@@ -118,8 +121,8 @@ QImage CImageTool::ConverFormatToRGB888(const QVideoFrame &frame) ...@@ -118,8 +121,8 @@ QImage CImageTool::ConverFormatToRGB888(const QVideoFrame &frame)
videoFrame.width(), videoFrame.height()); videoFrame.width(), videoFrame.height());
break; break;
default: default:
LOG_MODEL_ERROR("CImageTool", "Don't implement conver format: %d", qCritical(logImageTool) << "Don't implement conver format:"
videoFrame.pixelFormat()); << videoFrame.pixelFormat();
} }
} }
}while(0); }while(0);
...@@ -223,8 +226,8 @@ QImage CImageTool::LibyuvConverFormatToRGB888(const QVideoFrame &frame) ...@@ -223,8 +226,8 @@ QImage CImageTool::LibyuvConverFormatToRGB888(const QVideoFrame &frame)
} }
break; break;
default: default:
LOG_MODEL_WARNING("CImageTool", "LibyuvConverFormatToRGB888 Don't implement conver format: %d", qWarning(logImageTool) << "LibyuvConverFormatToRGB888 Don't implement conver format:"
videoFrame.pixelFormat()); << videoFrame.pixelFormat();
} }
}while(0); }while(0);
...@@ -308,7 +311,7 @@ int CImageTool::FindPlugins(QDir dir, QStringList filters) ...@@ -308,7 +311,7 @@ int CImageTool::FindPlugins(QDir dir, QStringList filters)
} }
QStringList files = dir.entryList(filters, QDir::Files | QDir::CaseSensitive); QStringList files = dir.entryList(filters, QDir::Files | QDir::CaseSensitive);
foreach (fileName, files) { foreach (fileName, files) {
//LOG_MODEL_INFO("CImageTool", "file name:%s", fileName.toStdString().c_str()); qInfo(logImageTool) << "file name:" << fileName;
QString szPlugins = dir.absoluteFilePath(fileName); QString szPlugins = dir.absoluteFilePath(fileName);
QPluginLoader loader(szPlugins); QPluginLoader loader(szPlugins);
QObject *plugin = loader.instance(); QObject *plugin = loader.instance();
...@@ -316,11 +319,14 @@ int CImageTool::FindPlugins(QDir dir, QStringList filters) ...@@ -316,11 +319,14 @@ int CImageTool::FindPlugins(QDir dir, QStringList filters)
m_pConverFormat = qobject_cast<CConverFormat*>(plugin); m_pConverFormat = qobject_cast<CConverFormat*>(plugin);
if(m_pConverFormat) if(m_pConverFormat)
{ {
qInfo(logImageTool) << "Load conver format plugin:"
<< m_pConverFormat->getName();
return 0; return 0;
} }
}else{ } else {
LOG_MODEL_ERROR("CImageTool", "load plugin error:%s", qCritical(logImageTool) << "Load plugin error:"
loader.errorString().toStdString().c_str()); << loader.errorString()
<< "file:" << szPlugins;
} }
} }
......
#include "Landmarker.h" #include "Landmarker.h"
#include "Log.h"
CLandmarker::CLandmarker(CFace *pFace, QObject *parent) CLandmarker::CLandmarker(CFace *pFace, QObject *parent)
: CFaceBase(parent), : CFaceBase(parent),
......
/*++
Copyright (c) Kang Lin studio, All Rights Reserved
Author:
Kang Lin(kl222@126.com)
Module Name:
Log.cpp
Abstract:
This file contains log implement.
*/
#include "Log.h"
#include <string>
#include <stdarg.h>
#include <QDebug>
#include <QFile>
#include <QUrl>
#include <QDesktopServices>
#define LOG_BUFFER_LENGTH 1024
CLog::CLog() : QObject()
{
m_pBuffer = new char[LOG_BUFFER_LENGTH];
}
CLog::~CLog()
{
if(m_pBuffer) delete []m_pBuffer;
}
CLog* CLog::Instance()
{
static CLog* p = nullptr;
if(!p)
p = new CLog;
return p;
}
int CLog::Log(const char *pszFile, int nLine, int nLevel,
const char* pszModelName, const char *pFormatString, ...)
{
if(!m_pBuffer) return -1;
QString szTemp = pszFile;
szTemp += "(";
sprintf(m_pBuffer, "%d", nLine);
szTemp += m_pBuffer;
szTemp += "):";
switch(nLevel)
{
case LM_DEBUG:
szTemp += "DEBUG";
break;
case LM_ERROR:
szTemp += "ERROR";
break;
case LM_INFO:
szTemp += "INFO";
break;
case LM_WARNING:
szTemp = "WARNING";
break;
}
szTemp += ":";
szTemp += pszModelName;
szTemp += ":";
va_list args;
va_start (args, pFormatString);
int nRet = vsnprintf(m_pBuffer, LOG_BUFFER_LENGTH, pFormatString, args);
va_end (args);
if(nRet < 0 || nRet >= LOG_BUFFER_LENGTH)
{
LOG_MODEL_ERROR("Global",
"vsprintf buf is short, %d > %d. Truncated it:%d",
nRet > LOG_BUFFER_LENGTH, LOG_BUFFER_LENGTH);
m_pBuffer[LOG_BUFFER_LENGTH - 1] = 0;
//return nRet;
}
szTemp += m_pBuffer;
Log(szTemp);
return 0;
}
int CLog::Log(const QString &szLog)
{
qCritical() << szLog;
if(!m_szFile.isEmpty())
{
QFile f(m_szFile);
if (!f.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text))
{
qDebug() << "open file fail: "
<< m_szFile
<< "["
<< f.error()
<< "]"
<< f.errorString();
return 0;
}
QTextStream out(&f);
out << szLog << endl;
f.close();
}
emit sigLog(szLog + "\n");
return 0;
}
int CLog::SetSaveFile(const QString &szFile)
{
m_szFile = szFile;
return 0;
}
QString CLog::GetSaveFile()
{
return m_szFile;
}
int CLog::OpneFile()
{
if(QDesktopServices::openUrl(QUrl::fromLocalFile(m_szFile)))
return 0;
return -1;
}
/*++
Copyright (c) Kang Lin studio, All Rights Reserved
Author:
Kang Lin(kl222@126.com)
Module Name:
Log.h
Abstract:
This file contains log define.
*/
#ifndef CLOG_H_KL_2013_10_10
#define CLOG_H_KL_2013_10_10
#pragma once
#include <QObject>
#include <QMetaClassInfo>
#include "facerecognizer_export.h"
class FACERECOGNIZER_EXPORT CLog : public QObject
{
Q_OBJECT
Q_CLASSINFO("Author", "Kang Lin <kl222@126.com>")
public:
CLog();
virtual ~CLog();
static CLog* Instance();
int SetSaveFile(const QString &szFile);
QString GetSaveFile();
public Q_SLOTS:
int OpneFile();
public:
/**
* @brief 日志
* @param pszFile:打印日志处文件名
* @param nLine:打印日志处行号
* @param nLevel:打印日志错误级别
* @param pszModelName:打印日志的模块范围
* @param pFormatString:格式化字符串
* @return
*/
int Log(const char *pszFile, int nLine, int nLevel,
const char* pszModelName, const char *pFormatString, ...);
int Log(const QString &szLog);
signals:
void sigLog(const QString &szLog);
private:
QString m_szFile;
char* m_pBuffer;
};
#define LM_DEBUG 0
#define LM_INFO 1
#define LM_WARNING 2
#define LM_ERROR 3
#define LOG_INITIALIZER
#define LOG_CLEAN
#ifdef DEBUG
#define LOG_ERROR(fmt, ...) CLog::Instance()->Log(__FILE__, __LINE__, LM_ERROR, "", fmt, ##__VA_ARGS__)
#define LOG_WARNING(fmt, ...) CLog::Instance()->Log(__FILE__, __LINE__, LM_WARNING, "", fmt, ##__VA_ARGS__)
#define LOG_DEBUG(fmt, ...) CLog::Instance()->Log(__FILE__, __LINE__, LM_DEBUG, "", fmt, ##__VA_ARGS__)
#define LOG_INFO(fmt, ...) CLog::Instance()->Log(__FILE__, __LINE__, LM_INFO, "", fmt, ##__VA_ARGS__)
#define LOG_MODEL_ERROR(model, fmt, ...) CLog::Instance()->Log(__FILE__, __LINE__, LM_ERROR, model, fmt, ##__VA_ARGS__)
#define LOG_MODEL_WARNING(model, fmt, ...) CLog::Instance()->Log(__FILE__, __LINE__, LM_WARNING, model, fmt, ##__VA_ARGS__)
#define LOG_MODEL_DEBUG(model, fmt, ...) CLog::Instance()->Log(__FILE__, __LINE__, LM_DEBUG, model, fmt, ##__VA_ARGS__)
#define LOG_MODEL_INFO(model, fmt, ...) CLog::Instance()->Log(__FILE__, __LINE__, LM_INFO, model, fmt, ##__VA_ARGS__)
#else
#define LOG_ERROR(fmt, ...) CLog::Instance()->Log(__FILE__, __LINE__, LM_ERROR, "", fmt, ##__VA_ARGS__)
#define LOG_DEBUG(fmt, ...)
#define LOG_WARNING(fmt, ...) CLog::Instance()->Log(__FILE__, __LINE__, LM_WARNING, "", fmt, ##__VA_ARGS__)
#define LOG_INFO(fmt, ...) CLog::Instance()->Log(__FILE__, __LINE__, LM_INFO, "", fmt, ##__VA_ARGS__)
#define LOG_MODEL_ERROR(model, fmt, ...) CLog::Instance()->Log(__FILE__, __LINE__, LM_ERROR, model, fmt, ##__VA_ARGS__)
#define LOG_MODEL_WARNING(model, fmt, ...) CLog::Instance()->Log(__FILE__, __LINE__, LM_WARNING, model, fmt, ##__VA_ARGS__)
#define LOG_MODEL_DEBUG(model, fmt, ...)
#define LOG_MODEL_INFO(model, fmt, ...) CLog::Instance()->Log(__FILE__, __LINE__, LM_INFO, model, fmt, ##__VA_ARGS__)
#endif//#ifdef DEBUG
#endif // CLOG_H_KL_2013_10_10
#include "ConverFormatFFmpeg.h" #include "ConverFormatFFmpeg.h"
#include "Performance.h" #include "Performance.h"
#include "Log.h" #include <QLoggingCategory>
Q_LOGGING_CATEGORY(logFFMPGE, "FFMPGE")
//设置日志的回调函数 //设置日志的回调函数
void Log(void*, int, const char* fmt, va_list vl) void Log(void*, int, const char* fmt, va_list vl)
{ {
LOG_MODEL_DEBUG("ffmpeg", fmt, vl); qDebug(logFFMPGE, fmt, vl);
} }
CConverFormatFFmpeg::CConverFormatFFmpeg(QObject *parent) : CConverFormat(parent) CConverFormatFFmpeg::CConverFormatFFmpeg(QObject *parent) : CConverFormat(parent)
...@@ -39,7 +41,7 @@ AVPixelFormat CConverFormatFFmpeg::QVideoFrameFormatToFFMpegPixFormat( ...@@ -39,7 +41,7 @@ AVPixelFormat CConverFormatFFmpeg::QVideoFrameFormatToFFMpegPixFormat(
return AV_PIX_FMT_YUV420P; return AV_PIX_FMT_YUV420P;
case QVideoFrame::Format_YV12: case QVideoFrame::Format_YV12:
default: default:
LOG_MODEL_ERROR("CConverFormatFFmpeg", "Don't conver format: %d", format); qCritical(logFFMPGE, "Don't conver format: %d", format);
return AV_PIX_FMT_NONE; return AV_PIX_FMT_NONE;
} }
} }
...@@ -94,7 +96,7 @@ int CConverFormatFFmpeg::ConvertFormat(/*[in]*/ const AVPicture &inFrame, ...@@ -94,7 +96,7 @@ int CConverFormatFFmpeg::ConvertFormat(/*[in]*/ const AVPicture &inFrame,
NULL, NULL, NULL); NULL, NULL, NULL);
if(NULL == pSwsCtx) if(NULL == pSwsCtx)
{ {
LOG_MODEL_ERROR("Tool", "sws_getContext false"); qCritical(logFFMPGE) << "sws_getContext false";
return -3; return -3;
} }
...@@ -105,7 +107,7 @@ int CConverFormatFFmpeg::ConvertFormat(/*[in]*/ const AVPicture &inFrame, ...@@ -105,7 +107,7 @@ int CConverFormatFFmpeg::ConvertFormat(/*[in]*/ const AVPicture &inFrame,
outFrame.data, outFrame.linesize); outFrame.data, outFrame.linesize);
if(nRet < 0) if(nRet < 0)
{ {
LOG_MODEL_ERROR("Tool", "sws_scale fail:%x", nRet); qCritical(logFFMPGE) << "sws_scale fail:" << nRet;
} }
else else
{ {
...@@ -137,7 +139,7 @@ QImage CConverFormatFFmpeg::onConverFormatToRGB888(const QVideoFrame &frame) ...@@ -137,7 +139,7 @@ QImage CConverFormatFFmpeg::onConverFormatToRGB888(const QVideoFrame &frame)
img.height()); img.height());
if(nRet < 0) if(nRet < 0)
{ {
LOG_MODEL_ERROR("CConverFormatFFmpeg", "avpicture_get_size fail:%d", nRet); qCritical(logFFMPGE) << "avpicture_get_size fail:" << nRet;
break; break;
} }
nRet = avpicture_fill(&inPic, videoFrame.bits(), nRet = avpicture_fill(&inPic, videoFrame.bits(),
...@@ -146,7 +148,7 @@ QImage CConverFormatFFmpeg::onConverFormatToRGB888(const QVideoFrame &frame) ...@@ -146,7 +148,7 @@ QImage CConverFormatFFmpeg::onConverFormatToRGB888(const QVideoFrame &frame)
videoFrame.height()); videoFrame.height());
if(nRet < 0) if(nRet < 0)
{ {
LOG_MODEL_ERROR("CConverFormatFFmpeg", "avpicture_fill is fail"); qCritical(logFFMPGE) << "avpicture_fill is fail";
break; break;
} }
......
#include "ConverFormatOpenCV.h" #include "ConverFormatOpenCV.h"
#include "Performance.h" #include "Performance.h"
#include "Log.h"
#if OpenCV_VERSION_MAJOR == 3 || OpenCV_VERSION_MAJOR == 2 #if OpenCV_VERSION_MAJOR == 3 || OpenCV_VERSION_MAJOR == 2
#include "opencv/cv.hpp" #include "opencv/cv.hpp"
...@@ -8,6 +7,9 @@ ...@@ -8,6 +7,9 @@
#include "opencv2/opencv.hpp" #include "opencv2/opencv.hpp"
#endif #endif
#include <QLoggingCategory>
Q_LOGGING_CATEGORY(logImageTool, "CConverFormatOpenCV")
CConverFormatOpenCV::CConverFormatOpenCV(QObject *parent) : CConverFormat(parent) CConverFormatOpenCV::CConverFormatOpenCV(QObject *parent) : CConverFormat(parent)
{} {}
...@@ -19,7 +21,7 @@ QImage CConverFormatOpenCV::onConverFormatToRGB888(const QVideoFrame &frame) ...@@ -19,7 +21,7 @@ QImage CConverFormatOpenCV::onConverFormatToRGB888(const QVideoFrame &frame)
return img; return img;
if(!videoFrame.map(QAbstractVideoBuffer::ReadOnly)) if(!videoFrame.map(QAbstractVideoBuffer::ReadOnly))
{ {
LOG_MODEL_ERROR("CImageTool", "videoFrame.map fail"); qCritical(logImageTool) << "videoFrame.map fail";
return img; return img;
} }
PERFORMANCE(OpenCVConverFormatToRGB888) PERFORMANCE(OpenCVConverFormatToRGB888)
...@@ -101,8 +103,8 @@ QImage CConverFormatOpenCV::onConverFormatToRGB888(const QVideoFrame &frame) ...@@ -101,8 +103,8 @@ QImage CConverFormatOpenCV::onConverFormatToRGB888(const QVideoFrame &frame)
default: default:
LOG_MODEL_WARNING("CImageTool", "OpenCVConverFormatToRGB888 Don't conver format: %d", qWarning(logImageTool) << "OpenCVConverFormatToRGB888 Don't conver format:"
videoFrame.pixelFormat()); << videoFrame.pixelFormat();
} }
}while(0); }while(0);
......
...@@ -77,6 +77,7 @@ if(NOT ANDROID) ...@@ -77,6 +77,7 @@ if(NOT ANDROID)
set(INSTALL_PATH ${INSTALL_FACE_RECOGNIZER_PLUGS_DIR}/Face) set(INSTALL_PATH ${INSTALL_FACE_RECOGNIZER_PLUGS_DIR}/Face)
endif() endif()
ADD_PLUGIN_TARGET(NAME ${PROJECT_NAME} ADD_PLUGIN_TARGET(NAME ${PROJECT_NAME}
NO_TRANSLATION
SOURCE_FILES ${SOURCES_FILES} ${HEADER_FILES} SOURCE_FILES ${SOURCES_FILES} ${HEADER_FILES}
PRIVATE_LIBS ${SeetaFace_LIBRARIES} FaceRecognizer PRIVATE_LIBS ${SeetaFace_LIBRARIES} FaceRecognizer
OUTPUT_DIR ${FACE_RECOGNIZER_PLUGS_BINARY_DIR}/Face OUTPUT_DIR ${FACE_RECOGNIZER_PLUGS_BINARY_DIR}/Face
......
#include "DetectorSeeta.h" #include "DetectorSeeta.h"
#include "Log.h"
#include "Performance.h" #include "Performance.h"
#include <QDir> #include <QDir>
#include <QDebug> #include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(log)
CDetectorSeeta::CDetectorSeeta(CFace *pFace, QObject *parent) CDetectorSeeta::CDetectorSeeta(CFace *pFace, QObject *parent)
: CDetector(pFace, parent) : CDetector(pFace, parent)
...@@ -73,7 +74,7 @@ int CDetectorSeeta::UpdateParameter() ...@@ -73,7 +74,7 @@ int CDetectorSeeta::UpdateParameter()
break; break;
default: default:
QString szErr = "Don't support device " + QString::number(getDevice()); QString szErr = "Don't support device " + QString::number(getDevice());
LOG_MODEL_ERROR("CDetectorSeeta", szErr.toStdString().c_str()); qCritical(log) << szErr;
break; break;
} }
...@@ -90,7 +91,7 @@ int CDetectorSeeta::UpdateParameter() ...@@ -90,7 +91,7 @@ int CDetectorSeeta::UpdateParameter()
m_Dector = QSharedPointer<seeta::FaceDetector>(new seeta::FaceDetector(model)); m_Dector = QSharedPointer<seeta::FaceDetector>(new seeta::FaceDetector(model));
} catch (...) { } catch (...) {
QString szErr = "Load model fail:" + szFile; QString szErr = "Load model fail:" + szFile;
LOG_MODEL_ERROR("CDetectorSeeta", szErr.toStdString().c_str()); qCritical(log) << szErr;
return -2; return -2;
} }
m_Dector->set(seeta::FaceDetector::PROPERTY_MIN_FACE_SIZE, getMinFaceSize()); m_Dector->set(seeta::FaceDetector::PROPERTY_MIN_FACE_SIZE, getMinFaceSize());
......
#include "FaceSeeta2.h" #include "FaceSeeta2.h"
#include "Log.h"
#include "DetectorSeeta.h" #include "DetectorSeeta.h"
#include "TrackerSeeta.h" #include "TrackerSeeta.h"
#include "LandmarkerSeeta.h" #include "LandmarkerSeeta.h"
...@@ -8,6 +7,9 @@ ...@@ -8,6 +7,9 @@
#include "FaceToolsSeeta.h" #include "FaceToolsSeeta.h"
#include <QDir> #include <QDir>
#include <QLoggingCategory>
Q_LOGGING_CATEGORY(log, "Seeta2")
CFaceSeeta2::CFaceSeeta2(QObject *parent) : CFace(parent) CFaceSeeta2::CFaceSeeta2(QObject *parent) : CFace(parent)
{} {}
......
#include "FaceToolsSeeta.h" #include "FaceToolsSeeta.h"
#include "Log.h"
#include "Performance.h" #include "Performance.h"
#include "Face.h" #include "Face.h"
......
#include "LandmarkerSeeta.h" #include "LandmarkerSeeta.h"
#include "Log.h"
#include "Performance.h" #include "Performance.h"
#include <QDir> #include <QDir>
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(log)
CLandmarkerSeeta::CLandmarkerSeeta(CFace *pFace, QObject *parent) CLandmarkerSeeta::CLandmarkerSeeta(CFace *pFace, QObject *parent)
: CLandmarker(pFace, parent) : CLandmarker(pFace, parent)
...@@ -27,7 +29,7 @@ int CLandmarkerSeeta::UpdateParameter() ...@@ -27,7 +29,7 @@ int CLandmarkerSeeta::UpdateParameter()
default: default:
QString szErr = "Don't support device" + QString szErr = "Don't support device" +
QString::number(getDevice()); QString::number(getDevice());
LOG_MODEL_ERROR("CLandmarkerSeeta", szErr.toStdString().c_str()); qCritical(log) << szErr.toStdString().c_str();
break; break;
} }
...@@ -50,7 +52,7 @@ int CLandmarkerSeeta::UpdateParameter() ...@@ -50,7 +52,7 @@ int CLandmarkerSeeta::UpdateParameter()
new seeta::FaceLandmarker(model)); new seeta::FaceLandmarker(model));
} catch (...) { } catch (...) {
QString szErr = "Load model fail:" + szFile; QString szErr = "Load model fail:" + szFile;
LOG_MODEL_ERROR("CLandmarkerSeeta", szErr.toStdString().c_str()); qCritical(log) << szErr;
return -1; return -1;
} }
m_bInit = true; m_bInit = true;
......
#include "RecognizerSeeta.h" #include "RecognizerSeeta.h"
#include "Log.h"
#include "RabbitCommonDir.h" #include "RabbitCommonDir.h"
#include "Performance.h" #include "Performance.h"
#include "FaceSeeta2.h" #include "FaceSeeta2.h"
#include <QDir> #include <QDir>
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(log)
CRecognizerSeeta::CRecognizerSeeta(CFace *pFace, QObject *parent) CRecognizerSeeta::CRecognizerSeeta(CFace *pFace, QObject *parent)
: CRecognizer(pFace, parent) : CRecognizer(pFace, parent)
...@@ -32,7 +34,7 @@ int CRecognizerSeeta::UpdateParameter() ...@@ -32,7 +34,7 @@ int CRecognizerSeeta::UpdateParameter()
default: default:
QString szErr = "Don't support device %d" + QString szErr = "Don't support device %d" +
QString::number(getDevice()); QString::number(getDevice());
LOG_MODEL_ERROR("CDetectorSeeta", szErr.toStdString().c_str()); qCritical(log) << szErr;
break; break;
} }
...@@ -50,12 +52,12 @@ int CRecognizerSeeta::UpdateParameter() ...@@ -50,12 +52,12 @@ int CRecognizerSeeta::UpdateParameter()
if(!m_Recognizer) if(!m_Recognizer)
{ {
QString szErr = "new seeta::FaceDatabase fail"; QString szErr = "new seeta::FaceDatabase fail";
LOG_MODEL_ERROR("CRecognizerSeeta", szErr.toStdString().c_str()); qCritical(log) << szErr;
return -2; return -2;
} }
} catch (...) { } catch (...) {
QString szErr = "Load model fail:" + szFile; QString szErr = "Load model fail:" + szFile;
LOG_MODEL_ERROR("CRecognizerSeeta", szErr.toStdString().c_str()); qCritical(log) << szErr;
return -3; return -3;
} }
...@@ -72,7 +74,7 @@ qint64 CRecognizerSeeta::Register(const QImage &image, const QRect &face) ...@@ -72,7 +74,7 @@ qint64 CRecognizerSeeta::Register(const QImage &image, const QRect &face)
QVector<QPointF> points; QVector<QPointF> points;
if(m_pFace->GetLandmarker()->Mark(image, face, points)) if(m_pFace->GetLandmarker()->Mark(image, face, points))
{ {
LOG_MODEL_ERROR("RecognizerSeeta", "GetLandmarker()->Mark fail"); qCritical(log) << "GetLandmarker()->Mark fail";
return -1; return -1;
} }
...@@ -110,7 +112,7 @@ qint64 CRecognizerSeeta::Register(const QImage &image, ...@@ -110,7 +112,7 @@ qint64 CRecognizerSeeta::Register(const QImage &image,
index = m_Recognizer->Register(data, p.data()); index = m_Recognizer->Register(data, p.data());
PERFORMANCE_ADD_TIME(SeetaRegister, "Register") PERFORMANCE_ADD_TIME(SeetaRegister, "Register")
if(!img.rgbSwapped().save(GetRegisterImage(index))) if(!img.rgbSwapped().save(GetRegisterImage(index)))
LOG_MODEL_ERROR("CRecognizerSeeta", "Save register image fail"); qCritical(log) << "Save register image fail";
return index; return index;
} }
...@@ -135,7 +137,7 @@ qint64 CRecognizerSeeta::Query(const QImage &image, const QRect &face) ...@@ -135,7 +137,7 @@ qint64 CRecognizerSeeta::Query(const QImage &image, const QRect &face)
QVector<QPointF> points; QVector<QPointF> points;
if(m_pFace->GetLandmarker()->Mark(image, face, points)) if(m_pFace->GetLandmarker()->Mark(image, face, points))
{ {
LOG_MODEL_ERROR("RecognizerSeeta", "GetLandmarker()->Mark fail"); qCritical(log) << "GetLandmarker()->Mark fail";
return -1; return -1;
} }
......
#include "TrackerSeeta.h" #include "TrackerSeeta.h"
#include "Log.h"
#include "Performance.h" #include "Performance.h"
#include <QDir> #include <QDir>
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(log)
CTrackerSeeta::CTrackerSeeta(CFace *pFace, QObject *parent) CTrackerSeeta::CTrackerSeeta(CFace *pFace, QObject *parent)
: CTracker(pFace, parent) : CTracker(pFace, parent)
...@@ -24,7 +26,7 @@ int CTrackerSeeta::UpdateParameter() ...@@ -24,7 +26,7 @@ int CTrackerSeeta::UpdateParameter()
default: default:
QString szErr = "Don't support device %d" + QString szErr = "Don't support device %d" +
QString::number(getDevice()); QString::number(getDevice());
LOG_MODEL_ERROR("CDetectorSeeta", szErr.toStdString().c_str()); qCritical(log) << szErr;
break; break;
} }
...@@ -42,7 +44,7 @@ int CTrackerSeeta::UpdateParameter() ...@@ -42,7 +44,7 @@ int CTrackerSeeta::UpdateParameter()
m_Tracker = QSharedPointer<seeta::FaceTracker>(new seeta::FaceTracker(model)); m_Tracker = QSharedPointer<seeta::FaceTracker>(new seeta::FaceTracker(model));
}catch(...){ }catch(...){
QString szErr = "Load model fail:" + szFile; QString szErr = "Load model fail:" + szFile;
LOG_MODEL_ERROR("CTrackerSeeta", szErr.toStdString().c_str()); qCritical(log) << szErr;
return -2; return -2;
} }
m_Tracker->set(seeta::FaceTracker::PROPERTY_VIDEO_STABLE, 1); m_Tracker->set(seeta::FaceTracker::PROPERTY_VIDEO_STABLE, 1);
......
#include "Recognizer.h" #include "Recognizer.h"
#include <QDir> #include <QDir>
#include "Log.h"
#include "RabbitCommonDir.h" #include "RabbitCommonDir.h"
CRecognizer::CRecognizer(CFace *pFace, QObject *parent) CRecognizer::CRecognizer(CFace *pFace, QObject *parent)
......
#include "Tracker.h" #include "Tracker.h"
#include "Log.h"
static int gTrackStrFaceId = qRegisterMetaType<CTracker::strFace>(); static int gTrackStrFaceId = qRegisterMetaType<CTracker::strFace>();
static int gVectorTrackStrFaceId = qRegisterMetaType<QVector<CTracker::strFace> >(); static int gVectorTrackStrFaceId = qRegisterMetaType<QVector<CTracker::strFace> >();
......
#include "Database.h" #include "Database.h"
#include "RabbitCommonDir.h" #include "RabbitCommonDir.h"
#include "Log.h"
#include <QDebug> #include <QDebug>
#include <QSqlError> #include <QSqlError>
...@@ -13,6 +12,10 @@ ...@@ -13,6 +12,10 @@
#include <stdexcept> #include <stdexcept>
#include <QLoggingCategory>
Q_LOGGING_CATEGORY(logDB, "DB")
CDatabase::CDatabase(QObject *parent) CDatabase::CDatabase(QObject *parent)
: QObject(parent) : QObject(parent)
{ {
...@@ -37,9 +40,9 @@ int CDatabase::InitDatabase() ...@@ -37,9 +40,9 @@ int CDatabase::InitDatabase()
{ {
if(!m_Database.open()) if(!m_Database.open())
{ {
LOG_MODEL_ERROR("CDatabase", "Open database fail: %s; %s", qCritical(logDB) << "Open database fail:"
m_Database.lastError().text().toStdString().c_str(), << m_Database.lastError().text()
m_szFile.toStdString().c_str()); << m_szFile;
return m_Database.lastError().nativeErrorCode().toInt(); return m_Database.lastError().nativeErrorCode().toInt();
} }
#if defined (_DEBUG) || defined(DEBUG) #if defined (_DEBUG) || defined(DEBUG)
...@@ -55,11 +58,11 @@ int CDatabase::InitDatabase() ...@@ -55,11 +58,11 @@ int CDatabase::InitDatabase()
QStringList sql = szSql.split(";"); QStringList sql = szSql.split(";");
for(int i = 0; i < sql.size(); i++) for(int i = 0; i < sql.size(); i++)
{ {
LOG_MODEL_DEBUG("CDatabase", "sql: %s", sql[i].toStdString().c_str()); qCritical(logDB) << "sql:" << sql[i];
if(!query.exec(sql[i]) && m_Database.lastError().type() != QSqlError::NoError) if(!query.exec(sql[i]) && m_Database.lastError().type() != QSqlError::NoError)
{ {
LOG_MODEL_ERROR("CDatabase", "Create database fail: %s", qCritical(logDB) << "Create database fail:"
m_Database.lastError().text().toStdString().c_str()); << m_Database.lastError().text();
file.close(); file.close();
m_Database.close(); m_Database.close();
QDir d; QDir d;
...@@ -74,8 +77,8 @@ int CDatabase::InitDatabase() ...@@ -74,8 +77,8 @@ int CDatabase::InitDatabase()
if(!m_Database.open()) if(!m_Database.open())
{ {
LOG_MODEL_ERROR("CDatabase", "Open database fail: %s", qCritical(logDB) << "Open database fail:"
m_Database.lastError().text().toStdString().c_str()); << m_Database.lastError().text();
return -2; return -2;
} }
......
#include "TableRegister.h" #include "TableRegister.h"
#include "RabbitCommonDir.h" #include "RabbitCommonDir.h"
#include "Log.h"
#include <QDebug> #include <QDebug>
#include <QSqlError> #include <QSqlError>
...@@ -11,6 +10,10 @@ ...@@ -11,6 +10,10 @@
#include <QMetaClassInfo> #include <QMetaClassInfo>
#include <QVariant> #include <QVariant>
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(logDB)
CTableRegister::CTableRegister(QObject *parent) : QObject(parent) CTableRegister::CTableRegister(QObject *parent) : QObject(parent)
{ {
} }
...@@ -32,7 +35,7 @@ int CTableRegister::Register(qint64 index, CDataRegister *pData) ...@@ -32,7 +35,7 @@ int CTableRegister::Register(qint64 index, CDataRegister *pData)
if(!m_Database.isOpen()) if(!m_Database.isOpen())
{ {
LOG_MODEL_ERROR("CTableRegister", "database isn't open"); qCritical(logDB) << "database isn't open";
return -3; return -3;
} }
...@@ -59,12 +62,11 @@ int CTableRegister::Register(qint64 index, CDataRegister *pData) ...@@ -59,12 +62,11 @@ int CTableRegister::Register(qint64 index, CDataRegister *pData)
} }
QString szSql = "INSERT INTO Register (" + szCol + ") VALUES (" + szValue + ");"; QString szSql = "INSERT INTO Register (" + szCol + ") VALUES (" + szValue + ");";
LOG_MODEL_DEBUG("CDatabase", "sql: %s\n", szSql.toStdString().c_str()); qCritical(logDB) << "sql:" << szSql;
QSqlQuery query(m_Database); QSqlQuery query(m_Database);
if(!query.exec(szSql)) if(!query.exec(szSql))
{ {
LOG_MODEL_ERROR("CDatabase", "Register fail: %s", qCritical(logDB) << "Register fail:" << m_Database.lastError().text();
m_Database.lastError().text().toStdString().c_str());
return m_Database.lastError().nativeErrorCode().toInt(); return m_Database.lastError().nativeErrorCode().toInt();
} }
return nRet; return nRet;
...@@ -76,7 +78,7 @@ int CTableRegister::Delete(qint64 index) ...@@ -76,7 +78,7 @@ int CTableRegister::Delete(qint64 index)
if(!m_Database.isOpen()) if(!m_Database.isOpen())
{ {
LOG_MODEL_ERROR("CTableRegister", "database isn't open"); qCritical(logDB) << "database isn't open";
return -1; return -1;
} }
...@@ -85,8 +87,7 @@ int CTableRegister::Delete(qint64 index) ...@@ -85,8 +87,7 @@ int CTableRegister::Delete(qint64 index)
QSqlQuery query(m_Database); QSqlQuery query(m_Database);
if(!query.exec(szSql)) if(!query.exec(szSql))
{ {
LOG_MODEL_ERROR("CDatabase", "Register fail: %s", qCritical(logDB) << "Register fail:" << m_Database.lastError().text();
m_Database.lastError().text().toStdString().c_str());
return m_Database.lastError().nativeErrorCode().toInt(); return m_Database.lastError().nativeErrorCode().toInt();
} }
return nRet; return nRet;
...@@ -100,7 +101,7 @@ int CTableRegister::GetRegisterInfo(qint64 index, CDataRegister *pData) ...@@ -100,7 +101,7 @@ int CTableRegister::GetRegisterInfo(qint64 index, CDataRegister *pData)
if(!m_Database.isOpen()) if(!m_Database.isOpen())
{ {
LOG_MODEL_ERROR("CTableRegister", "database isn't open"); qCritical(logDB) << "database isn't open";
return -2; return -2;
} }
...@@ -109,9 +110,8 @@ int CTableRegister::GetRegisterInfo(qint64 index, CDataRegister *pData) ...@@ -109,9 +110,8 @@ int CTableRegister::GetRegisterInfo(qint64 index, CDataRegister *pData)
QSqlQuery query(m_Database); QSqlQuery query(m_Database);
if(!query.exec(szSql)) if(!query.exec(szSql))
{ {
LOG_MODEL_ERROR("CDatabase", "Register fail: %s; sql: %s", qCritical(logDB) << "Register fail:" << m_Database.lastError().text()
m_Database.lastError().text().toStdString().c_str(), << "sql:" << szSql;
szSql.toStdString().c_str());
return m_Database.lastError().nativeErrorCode().toInt(); return m_Database.lastError().nativeErrorCode().toInt();
} }
while (query.next()) { while (query.next()) {
...@@ -141,9 +141,8 @@ bool CTableRegister::IsExistNo(qint64 no) ...@@ -141,9 +141,8 @@ bool CTableRegister::IsExistNo(qint64 no)
QSqlQuery query(m_Database); QSqlQuery query(m_Database);
if(!query.exec(szSql)) if(!query.exec(szSql))
{ {
LOG_MODEL_ERROR("CDatabase", "Register fail: %s; sql: %s", qCritical(logDB) << "Register fail:"
m_Database.lastError().text().toStdString().c_str(), << m_Database.lastError().text() << "sql:" << szSql;
szSql.toStdString().c_str());
return false; return false;
} }
if(query.next()) if(query.next())
......
# 参见:https://github.com/KangLin/Documents/blob/master/qt/log4qt.md
#设置储存log文件的根目录
logpath=../log
#格式化符号说明:
# %p:输出日志信息的优先级,即DEBUG,INFO,WARN,ERROR,FATAL。
# %d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,如:%d{yyyy/MM/dd HH:mm:ss,SSS}。
# %r:输出自应用程序启动到输出该log信息耗费的毫秒数。
# %t:输出产生该日志事件的线程名。
# %l:输出日志事件的发生位置,相当于%c.%M(%F:%L)的组合,包括类全名、方法、文件名以及在代码中的行数。例如:test.TestLog4j.main(TestLog4j.java:10)。
# %c:输出日志信息所属的类目,通常就是所在类的全名。
# %M:输出产生日志信息的方法名。
# %F:输出日志消息产生时所在的文件名称。
# %L::输出代码中的行号。
# %m::输出代码中指定的具体日志信息。
# %n:输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"。
# %x:输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
# %%:输出一个"%“字符。
# 另外,还可以在%与格式字符之间加上修饰符来控制其最小长度、最大长度、和文本的对齐方式。如:
# c:指定输出category的名称,最小的长度是20,如果category的名称长度小于20的话,默认的情况下右对齐。
# 2)%-20c:”-"号表示左对齐。
# 3)%.30c:指定输出category的名称,最大的长度是30,如果category的名称长度大于30的话,就会将左边多出的字符截掉,但小于30的话也不会补空格。
logConversionPattern=%F:%L [%d] [%t] %5p %c - %m%n
log4j.reset=true
log4j.Debug=WARN
log4j.threshold=NULL
#在运行中,是否监视此文件配置的变化
log4j.watchThisFile=false
#设置是否监听QDebug输出的字符串
log4j.handleQtMessages=true
# QLoggingCategory 过滤规则
#log4j.qtLogging.filterRules=
#log4j.qtLogging.messagePattern=
#rootLogger 输出
# log4j.rootLogger 日志输出类别和级别:只输出不低于该级别的日志信息 DEBUG < INFO < WARN < ERROR < FATAL
#设置日志输出的几种输出源(appender)。
# log4j.rootLogger 格式:[ level ] , appenderName1, appenderName2, …
# level :设定日志记录的最低级别,
# 可设的值有 OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL 或者自定义的级别,Log4j建议只使用中间四个级别。
# 通过在这里设定级别,您可以控制应用程序中相应级别的日志信息的开关,比如在这里设定了INFO级别,则应用程序中所有DEBUG级别的日志信息将不会被打印出来。
# 只输出不低于该级别的日志信息 DEBUG < INFO < WARN < ERROR < FATAL
# appenderName:就是指定日志信息要输出到哪里。可以同时指定多个输出目的地,用逗号隔开。本例是:console, daily
log4j.rootLogger=ALL, console, daily
###############################
# 输出到控制台
###############################
# 配置INFO CONSOLE输出到控制台
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
# 输入日志等级,默认值是 DEBUG
#log4j.appender.console.Threshold=DEBUG
# 配置CONSOLE设置为自定义布局模式
log4j.appender.console.layout=org.apache.log4j.PatternLayout
# 配置logfile为自定义布局模式
log4j.appender.console.layout.ConversionPattern=${logConversionPattern}
###############################
# 输出到日志文件中
###############################
# 配置 logfile 输出到文件中 每日产生文件
log4j.appender.daily=org.apache.log4j.DailyFileAppender
# 输出文件位置此为项目根目录下的logs文件夹中
log4j.appender.daily.file=${logpath}/root.log
#true表示消息增加到指定文件中,false 则将消息覆盖指定的文件内容,默认值是 false
log4j.appender.daily.appendFile=true
# 日期格式
log4j.appender.daily.datePattern=_yyyy_MM_dd
# 立即输出。表示所有消息都会被立即输出,设为 false 则不立即输出,默认值是 true
log4j.appender.daily.immediateFlush=true
# 输入日志等级,默认值是 DEBUG
log4j.appender.daily.Threshold=DEBUG
# 设置保留天数
log4j.appender.daily.keepDays=10
# 配置logfile为自定义布局模式
log4j.appender.daily.layout=org.apache.log4j.PatternLayout
log4j.appender.daily.layout.ConversionPattern=${logConversionPattern}
[Log]
;Path=log
Name="yyyy-MM-dd"
Pattern="%{time hh:mm:ss.zzz} [%{threadid}] %{type} [%{category}] - %{message} [%{file}:%{line}, %{function}]"
;Length=100M
;Count=10
;Interval=1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Log rules
;Please see QLoggingCategory documents
;Format:
; <category>[.<type>] = true|false
[Rules]
;*=false
*.debug=false
;*.warning=false
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册