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

Modify log

上级 fe814339
......@@ -12,7 +12,6 @@ project(FaceRecognizerApp)
set(SOURCE_FILES
FrmDisplay.cpp
DlgLog.cpp
main.cpp
MainWindow.cpp
FrmRegisterImage.cpp
......@@ -31,7 +30,6 @@ set(SOURCE_FILES
set(HEADER_FILES
FrmDisplay.h
DlgLog.h
MainWindow.h
FrmRegisterImage.h
FrmRecognizerImage.h
......@@ -49,7 +47,6 @@ set(HEADER_FILES
set(SOURCE_UI_FILES
FrmDisplay.ui
DlgLog.ui
MainWindow.ui
FrmRegisterImage.ui
FrmRecognizerImage.ui
......@@ -60,16 +57,6 @@ set(SOURCE_UI_FILES
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_ARCH="${BUILD_ARCH}")
......@@ -87,6 +74,7 @@ ADD_TARGET(NAME ${PROJECT_NAME}
ISWINDOWS
VERSION ${FaceRecognizer_VERSION}
PRIVATE_DEFINITIONS FaceRecognizer_VERSION="${FaceRecognizer_VERSION}"
FaceRecognizer_REVISION="${FaceRecognizer_REVISION}"
SOURCE_FILES ${SOURCE_FILES} ${HEADER_FILES} ${SOURCE_UI_FILES} ${RCC_FILES}
PRIVATE_LIBS ${QT_LIBRARIES} FaceRecognizer)
......@@ -109,3 +97,22 @@ if(UNIX AND NOT ANDROID)
COMPONENT Runtime)
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 @@
#include "DelegateParamter.h"
#include "FrmBroweFile.h"
#include "Log.h"
#include <QDebug>
#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 @@
#include "FrmPara.h"
#include "ui_FrmPara.h"
#include "Log.h"
#include "FactoryFace.h"
#include "DelegateParamter.h"
#include <QDebug>
......
......@@ -6,13 +6,15 @@
#include "ui_FrmRecognizerVideo.h"
#include "FactoryFace.h"
#include "Performance.h"
#include "Log.h"
#include <QFont>
#include <QPainter>
#include <QDebug>
#include <QMutexLocker>
#include <stdexcept>
#include <QLoggingCategory>
Q_LOGGING_CATEGORY(logVideo, "Video")
CFrmRecognizerVideo::CFrmRecognizerVideo(QWidget *parent) :
QWidget(parent),
......@@ -29,7 +31,7 @@ CFrmRecognizerVideo::CFrmRecognizerVideo(QWidget *parent) :
CFrmRecognizerVideo::~CFrmRecognizerVideo()
{
qDebug() << "CFrmRecognizerVideo::~CFrmRecognizerVideo()";
qDebug(logVideo) << "CFrmRecognizerVideo::~CFrmRecognizerVideo()";
delete ui;
}
......@@ -64,7 +66,7 @@ void CFrmRecognizerVideo::slotDisplay(const QImage &image)
{
if(isHidden() || !m_pFace->bIsValid())
{
LOG_MODEL_ERROR("CFrmRecognizerVideo", "isHidden() || !m_pFace");
qCritical(logVideo) << "CFrmRecognizerVideo:" << "isHidden() || !m_pFace";
return;
}
......@@ -101,11 +103,11 @@ void CFrmRecognizerVideo::slotDisplay(const QImage &image)
ui->wgDisplay->slotDisplay(img);
if(bRecognize)
{
//qDebug() << "emit sigRecognize(image, faces); start";
//qDebug(logVideo) << "emit sigRecognize(image, faces); start";
QMutexLocker locker(&m_Mutex);
emit sigRecognize(image, faces);
PERFORMANCE_ADD_TIME(CFrmRecognizerVideo, "sigRecognize")
//qDebug() << "emit sigRecognize(image, faces); end";
//qDebug(logVideo) << "emit sigRecognize(image, faces); end";
}
if(faces.size() > 1)
{
......
......@@ -4,7 +4,6 @@
#include "FrmRegisterImage.h"
#include "ui_FrmRegisterImage.h"
#include "Log.h"
#include "RabbitCommonDir.h"
#include <QMessageBox>
......
......@@ -19,8 +19,6 @@
#include "ManageRegisterVideo.h"
#include "ManageRecognizerVideo.h"
#include "FactoryFace.h"
#include "Log.h"
#include "DlgLog.h"
#include <QIcon>
#include <QCameraInfo>
......@@ -35,6 +33,9 @@
#include <QStandardPaths>
#include <QDockWidget>
#include <QScreen>
#include <QLoggingCategory>
Q_LOGGING_CATEGORY(log, "main")
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
......@@ -42,10 +43,7 @@ MainWindow::MainWindow(QWidget *parent) :
m_pCamera(nullptr)
{
ui->setupUi(this);
CLog::Instance()->SetSaveFile(QStandardPaths::writableLocation(
QStandardPaths::TempLocation)
+ QDir::separator()
+ qApp->applicationName() + ".log");
//Init menu
ui->actionStart->setIcon(QIcon(":/image/Start"));
ui->actionStart->setText(tr("Start"));
......@@ -78,8 +76,7 @@ MainWindow::MainWindow(QWidget *parent) :
ui->toolBar->addWidget(cmbCameras);
QList<QCameraInfo> cameras = QCameraInfo::availableCameras();
foreach (const QCameraInfo &cameraInfo, cameras) {
// LOG_MODEL_DEBUG("MainWindows", "Camer name: %s",
// cameraInfo.deviceName().toStdString().c_str());
//qDebug(log) << "Camer name:" << cameraInfo.deviceName();
cmbCameras->addItem(cameraInfo.description());
}
......@@ -166,14 +163,14 @@ void MainWindow::slotCameraChanged(int index)
m_pCamera->load();
qInfo() << "Camera support:";
qInfo() << "Resolutions:" << m_pCamera->supportedViewfinderResolutions(m_pCamera->viewfinderSettings());
qInfo(log) << "Camera support:";
qInfo(log) << "Resolutions:" << m_pCamera->supportedViewfinderResolutions(m_pCamera->viewfinderSettings());
QList<QCamera::FrameRateRange> ranges = m_pCamera->supportedViewfinderFrameRateRanges();
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.setMinimumFrameRate(10.0);
......@@ -181,11 +178,11 @@ void MainWindow::slotCameraChanged(int index)
// m_pCamera->setViewfinderSettings(viewfinderSettings);
m_pCamera->unload();
qInfo() << "Current:";
qInfo() << "Resolutions:" << viewfinderSettings.resolution();
qInfo() << "Frame rate:" << viewfinderSettings.minimumFrameRate() << viewfinderSettings.maximumFrameRate();
qInfo() << "Pixel formate:" << viewfinderSettings.pixelFormat();
qInfo() << "" << viewfinderSettings.pixelAspectRatio();
qInfo(log) << "Current:";
qInfo(log) << "Resolutions:" << viewfinderSettings.resolution();
qInfo(log) << "Frame rate:" << viewfinderSettings.minimumFrameRate() << viewfinderSettings.maximumFrameRate();
qInfo(log) << "Pixel formate:" << viewfinderSettings.pixelFormat();
qInfo(log) << "" << viewfinderSettings.pixelAspectRatio();
//*/
......@@ -206,7 +203,7 @@ void MainWindow::slotCameraChanged(int index)
// focusMode = QCameraFocus::MacroFocus;
// else
// focusMode = QCameraFocus::ManualFocus;
LOG_MODEL_DEBUG("MainWindow", "focusMode:0x%x", focusMode);
qDebug(log) << "focusMode:" << focusMode;
focus->setFocusMode(focusMode);
focus->setFocusPointMode(QCameraFocus::FocusPointAuto);
......@@ -369,13 +366,13 @@ int MainWindow::CamerOrientation(int index)
int screenAngle = 0;
#if (QT_VERSION >= QT_VERSION_CHECK(5, 2, 0))
qDebug() << "orientation:" << screen->orientation()
qDebug(log) << "orientation:" << screen->orientation()
<< screen->nativeOrientation()
<< screen->orientationUpdateMask();
screenAngle = screen->angleBetween(screen->nativeOrientation(),
screen->orientation());
#endif
qDebug() << "screenAngle:" << screenAngle
qDebug(log) << "screenAngle:" << screenAngle
<< "camer orientation:" << cameraInfo.orientation();
int rotation;
if (cameraInfo.position() == QCamera::BackFace) {
......@@ -385,8 +382,8 @@ int MainWindow::CamerOrientation(int index)
rotation = (360 - cameraInfo.orientation() + screenAngle) % 360;
}
int a = cameraInfo.orientation();
LOG_MODEL_DEBUG("MainWindow", "Camer angle: %d; %d", a, rotation);
qDebug() << "orientation1:" << a << rotation;
qDebug(log) << "Camer angle:" << a << rotation;
qDebug(log) << "orientation1:" << a << rotation;
return rotation;
}
......@@ -394,9 +391,9 @@ void MainWindow::slotScreenOrientationChanged(Qt::ScreenOrientation orientation)
{
QScreen *screen = QGuiApplication::primaryScreen();
#if (QT_VERSION >= QT_VERSION_CHECK(5, 2, 0))
qDebug() << "slotScreenOrientationChanged:" << orientation
<<screen->nativeOrientation()
<< screen->orientation();
qDebug(log) << "slotScreenOrientationChanged:" << orientation
<<screen->nativeOrientation()
<< screen->orientation();
#endif
}
......@@ -482,6 +479,7 @@ void MainWindow::on_actionAbout_A_triggered()
about.m_AppIcon = QImage(":/image/FaceRecognizer");
about.m_szHomePage = "https://github.com/KangLin/FaceRecognizer";
about.m_szCopyrightStartTime = "2019";
about.m_szVersionRevision = FaceRecognizer_REVISION;
if(about.isHidden())
#if defined (Q_OS_ANDROID)
about.showMaximized();
......@@ -551,7 +549,7 @@ int MainWindow::createDockPerameters()
m_Paramter = QSharedPointer<CFrmPara>(new CFrmPara(dock));
if(!m_Paramter)
{
LOG_MODEL_ERROR("MainWindow", "new CFrmPara fail");
qCritical(log) << "new CFrmPara fail";
return -1;
}
dock->setWidget(m_Paramter.data());
......
......@@ -4,7 +4,10 @@
#include "RecognizerThread.h"
#include "RecognizerVideo.h"
#include "Log.h"
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(log)
CRecognizerThread::CRecognizerThread(CManageRecognizerVideo *parent) : QThread()
{
......@@ -13,13 +16,12 @@ CRecognizerThread::CRecognizerThread(CManageRecognizerVideo *parent) : QThread()
CRecognizerThread::~CRecognizerThread()
{
LOG_MODEL_DEBUG("RecognizerThread", "CRecognizerThread::~CRecognizerThread");
qDebug(log) << "CRecognizerThread::~CRecognizerThread";
}
void CRecognizerThread::run()
{
LOG_MODEL_DEBUG("RecognizerThread", "CRecognizerThread::run():%d",
QThread::currentThreadId());
qDebug(log) << "CRecognizerThread::run():" << QThread::currentThreadId();
CRecognizerVideo recognizer;
bool check = connect(m_pManageRecognizerVideo, SIGNAL(sigRecognize(const QImage&, const QVector<CTracker::strFace> &)),
&recognizer, SLOT(slotRecognize(const QImage &, const QVector<CTracker::strFace> &)));
......
......@@ -3,11 +3,12 @@
*/
#include "RecognizerVideo.h"
#include "Log.h"
#include "Performance.h"
#include <QtDebug>
#include <QThread>
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(logVideo)
static int gIdQMapIntQString = qRegisterMetaType<QMap<int,QString> >();
CRecognizerVideo::CRecognizerVideo(QObject *parent) : QObject(parent)
......@@ -29,14 +30,14 @@ void CRecognizerVideo::slotRecognize(const QImage &image, const QVector<CTracker
"Mark points:" + QString::number(points.size()))
if(points.isEmpty())
{
LOG_MODEL_ERROR("CRecognizerVideo", "points is empty");
qCritical(logVideo) << "points is empty";
continue;
}
qint64 index = pFace->GetRecognizer()->Query(image, face.rect);
PERFORMANCE_ADD_TIME(CRecognizerVideo, "Query")
if(-1 == index)
{
LOG_MODEL_ERROR("CRecognizerVideo", "pid[%d] don't query", face.pid);
qCritical(logVideo) << "pid[" << face.pid << "] don't query";
continue;
}
CDataRegister data;
......
......@@ -15,12 +15,10 @@
#include "FrmUpdater/FrmUpdater.h"
#endif
#include "Log.h"
Q_DECLARE_LOGGING_CATEGORY(log)
int main(int argc, char *argv[])
{
LOG_INITIALIZER;
#if (QT_VERSION > QT_VERSION_CHECK(5,6,0))
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
......@@ -31,22 +29,22 @@ int main(int argc, char *argv[])
app.setApplicationName("FaceRecognizer");
#ifdef RABBITCOMMON
LOG_MODEL_INFO("main", "GetDirApplication:%s",
RabbitCommon::CDir::Instance()->GetDirApplication().toStdString().c_str());
qInfo(log) << "GetDirApplication:"
<< RabbitCommon::CDir::Instance()->GetDirApplication();
RabbitCommon::CTools::Instance()->Init();
QString szTranslator = RabbitCommon::CDir::Instance()->GetDirTranslations()
+ "/" + qApp->applicationName()
+ "App_" + QLocale::system().name() + ".qm";
qDebug() << "Translator:" << szTranslator;
qDebug(log) << "Translator:" << szTranslator;
QTranslator translator;
translator.load(szTranslator);
app.installTranslator(&translator);
#endif
app.setApplicationDisplayName(QObject::tr("Face recognizer"));
#ifdef RABBITCOMMON
CFrmUpdater *pUpdate = new CFrmUpdater();
pUpdate->SetTitle(QImage(":/image/FaceRecognizer"));
......@@ -58,7 +56,7 @@ int main(int argc, char *argv[])
if(f.open(QFile::ReadOnly))
{
QString szStyle = f.readAll();
qDebug() << "Style:" << szStyle;
qDebug(log) << "Style:" << szStyle;
qApp->setStyleSheet(szStyle);
f.close();
}
......@@ -66,16 +64,14 @@ int main(int argc, char *argv[])
app.addLibraryPath(RabbitCommon::CDir::Instance()->GetDirPlugins());
MainWindow w;
#if defined (Q_OS_ANDROID)
w.showMaximized();
#else
w.show();
#endif
int nRet = app.exec();
LOG_CLEAN;
return nRet;
}
......@@ -12,34 +12,6 @@ if(POLICY CMP0020)
cmake_policy(SET CMP0020 NEW)
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)
set(CMAKE_BUILD_TYPE "Release")
endif(NOT DEFINED CMAKE_BUILD_TYPE)
......@@ -174,6 +146,13 @@ else()
message(" ag:")
message(FATAL_ERROR " cmake -DRabbitCommon_DIR= ")
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)
option(BUILD_APP "Build applaction" ON)
if(BUILD_APP)
......
......@@ -38,7 +38,6 @@ set(SOURCE_FILES
CameraQtCaptureVideoFrame.cpp
ImageTool.cpp
ConverFormat.cpp
Log.cpp
FactoryFace.cpp
Face.cpp
FaceBase.cpp
......@@ -70,23 +69,11 @@ set(INSTALLHEADER_FILES
set(HEADER_FILES
${HEADER_FILES}
${INSTALLHEADER_FILES}
Log.h
database/Database.h
database/DataRegister.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)
if(BUILD_TYPE STREQUAL "debug")
set(LIBS_DEFINES ${LIBS_DEFINES} DEBUG)
......@@ -107,7 +94,9 @@ endif()
ADD_TARGET(NAME ${PROJECT_NAME}
VERSION ${FaceRecognizer_VERSION}
PRIVATE_DEFINITIONS FaceRecognizer_VERSION="${FaceRecognizer_VERSION}"
PRIVATE_DEFINITIONS
FaceRecognizer_VERSION="${FaceRecognizer_VERSION}"
FaceRecognizer_REVISION="${FaceRecognizer_REVISION}"
DEFINITIONS RABBITCOMMON ${LIBS_DEFINES}
SOURCE_FILES ${SOURCE_FILES} ${HEADER_FILES} ${RCC_FILES}
INSTALL_HEADER_FILES "${INSTALLHEADER_FILES}"
......
#include "Face.h"
#include "Log.h"
#include <QLoggingCategory>
Q_LOGGING_CATEGORY(logFace, "Face")
CFace::CFace(QObject *parent) : QObject(parent),
m_pDetector(nullptr),
......@@ -12,7 +15,7 @@ CFace::CFace(QObject *parent) : QObject(parent),
try {
m_pDatabase = new CDatabase();
} catch (...) {
LOG_MODEL_ERROR("CFace", "new CDatabase fail");
qCritical(logFace) << "new CDatabase fail";
}
}
......@@ -31,7 +34,7 @@ int CFace::Initialize()
int CFace::Clean()
{
LOG_MODEL_DEBUG("CFace", "Clean %s", this->metaObject()->className());
qDebug(logFace) << "Clean" << this->metaObject()->className();
if(m_pDetector)
{
......@@ -81,32 +84,32 @@ bool CFace::IsValid()
{
if(!GetDector())
{
LOG_MODEL_ERROR("CFace", "CFace::GetDector is null");
qCritical(logFace) << "CFace::GetDector is null";
return false;
}
if(!GetTracker())
{
LOG_MODEL_ERROR("CFace", "CFace::GetTracker is null");
qCritical(logFace) << "CFace::GetTracker is null";
return false;
}
if(!GetLandmarker())
{
LOG_MODEL_ERROR("CFace", "CFace::GetLandmarker is null");
qCritical(logFace) << "CFace::GetLandmarker is null";
return false;
}
if(!GetRecognizer())
{
LOG_MODEL_ERROR("CFace", "CFace::GetRecognizer is null");
qCritical(logFace) << "CFace::GetRecognizer is null";
return false;
}
if(!GetFaceTools())
{
LOG_MODEL_ERROR("CFace", "CFace::GetFaceTools is null");
qCritical(logFace) << "CFace::GetFaceTools is null";
return false;
}
if(!GetDatabase())
{
LOG_MODEL_ERROR("CFace", "CFace::GetDatabase is null");
qCritical(logFace) << "CFace::GetDatabase is null";
return false;
}
return true;
......
......@@ -22,7 +22,7 @@ class FACERECOGNIZER_EXPORT CFace : public QObject
{
Q_OBJECT
Q_CLASSINFO("Author", "Kang Lin <kl222@126.com>")
Q_PROPERTY(QString name READ GetName)
Q_PROPERTY(QString descritp READ GetDescript)
Q_PROPERTY(int level READ GetLevel)
......@@ -30,7 +30,7 @@ class FACERECOGNIZER_EXPORT CFace : public QObject
public:
explicit CFace(QObject *parent = nullptr);
virtual ~CFace();
virtual int Initialize();
virtual int Clean();
virtual QString GetName();
......@@ -42,7 +42,7 @@ public:
LOWER = -1
};
virtual int GetLevel();
bool IsValid();
virtual CDetector* GetDector();
......
#include "FaceBase.h"
#include "Log.h"
#include "RabbitCommonDir.h"
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(logFace)
CFaceBase::CFaceBase(QObject *parent) : QObject(parent),
m_Device(CPU)
{
m_szModelPath = RabbitCommon::CDir::Instance()->GetDirData(false)
+ QDir::separator() + "model";
LOG_MODEL_DEBUG("CParameter", "szPath:%s", m_szModelPath.toStdString().c_str());
qDebug(logFace) << "szPath:" << m_szModelPath;
#if defined(Q_OS_ANDROID)
QDir d;
if(!d.exists(m_szModelPath))
......
#include "FaceTools.h"
#include "Log.h"
CFaceTools::CFaceTools(CFace *pFace, QObject *parent) : CFaceBase(parent),
m_pFace(pFace)
......
#include "FactoryFace.h"
#include "Log.h"
#ifdef RABBITCOMMON
#include <RabbitCommonDir.h>
......@@ -7,7 +6,9 @@
#include <QDebug>
#include <QPluginLoader>
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(logFace)
CFactoryFace::CFactoryFace(QObject *parent): QObject(parent),
m_CurrentLib(-1),
m_bOnlyUserCurrent(true)
......@@ -162,37 +163,37 @@ bool CFactoryFace::bIsValid(const QString &szName)
{
if(!GetFace(szName))
{
LOG_MODEL_ERROR("CFactory", "CFactory::GetFace is null");
qCritical(logFace) << "CFactory::GetFace is null";
return false;
}
if(!GetDector(szName))
{
LOG_MODEL_ERROR("CFactory", "CFactory::GetDector is null");
qCritical(logFace) << "CFactory::GetDector is null";
return false;
}
if(!GetTracker(szName))
{
LOG_MODEL_ERROR("CFactory", "CFactory::GetTracker is null");
qCritical(logFace) << "CFactory::GetTracker is null";
return false;
}
if(!GetLandmarker(szName))
{
LOG_MODEL_ERROR("CFactory", "CFactory::GetLandmarker is null");
qCritical(logFace) << "CFactory::GetLandmarker is null";
return false;
}
if(!GetRecognizer(szName))
{
LOG_MODEL_ERROR("CFactory", "CFactory::GetRecognizer is null");
qCritical(logFace) << "CFactory::GetRecognizer is null";
return false;
}
if(!GetFaceTools(szName))
{
LOG_MODEL_ERROR("CFactory", "CFactory::GetFaceTools is null");
qCritical(logFace) << "CFactory::GetFaceTools is null";
return false;
}
if(!GetDatabase(szName))
{
LOG_MODEL_ERROR("CFactory", "CFactory::GetDatabase is null");
qCritical(logFace) << "CFactory::GetDatabase is null";
return false;
}
return true;
......@@ -401,7 +402,7 @@ int CFactoryFace::FindPlugins(QDir dir, QStringList filters)
}
QStringList files = dir.entryList(filters, QDir::Files | QDir::CaseSensitive);
foreach (fileName, files) {
//LOG_MODEL_INFO("CFactoryFace", "file name:%s", fileName.toStdString().c_str());
//qInfo(logFace) << "file name:" << fileName;
QString szPlugins = dir.absoluteFilePath(fileName);
QPluginLoader loader(szPlugins);
QObject *plugin = loader.instance();
......@@ -410,11 +411,12 @@ int CFactoryFace::FindPlugins(QDir dir, QStringList filters)
if(pPlugFace)
{
RegisterFace(pPlugFace);
qInfo(logFace) << "Load plugin:" << pPlugFace->GetName()
<< "; Path:" << szPlugins;
continue;
}
}else{
LOG_MODEL_ERROR("CFactoryFace", "load plugin error:%s",
loader.errorString().toStdString().c_str());
qCritical(logFace) << "Load plugin error:" << loader.errorString();
}
}
......
#include "ImageTool.h"
#include "Log.h"
#include "Performance.h"
#if HAVE_LIBYUV
......@@ -21,6 +21,9 @@
#include <QFile>
#include <QPainter>
#include <QPluginLoader>
#include <QLoggingCategory>
Q_LOGGING_CATEGORY(logImageTool, "ImageTool")
CImageTool::CImageTool(QObject *parent) : QObject(parent), m_pConverFormat(nullptr)
{
......@@ -77,7 +80,7 @@ QImage CImageTool::ConverFormatToRGB888(const QVideoFrame &frame)
#endif
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;
}
......@@ -118,8 +121,8 @@ QImage CImageTool::ConverFormatToRGB888(const QVideoFrame &frame)
videoFrame.width(), videoFrame.height());
break;
default:
LOG_MODEL_ERROR("CImageTool", "Don't implement conver format: %d",
videoFrame.pixelFormat());
qCritical(logImageTool) << "Don't implement conver format:"
<< videoFrame.pixelFormat();
}
}
}while(0);
......@@ -223,8 +226,8 @@ QImage CImageTool::LibyuvConverFormatToRGB888(const QVideoFrame &frame)
}
break;
default:
LOG_MODEL_WARNING("CImageTool", "LibyuvConverFormatToRGB888 Don't implement conver format: %d",
videoFrame.pixelFormat());
qWarning(logImageTool) << "LibyuvConverFormatToRGB888 Don't implement conver format:"
<< videoFrame.pixelFormat();
}
}while(0);
......@@ -308,7 +311,7 @@ int CImageTool::FindPlugins(QDir dir, QStringList filters)
}
QStringList files = dir.entryList(filters, QDir::Files | QDir::CaseSensitive);
foreach (fileName, files) {
//LOG_MODEL_INFO("CImageTool", "file name:%s", fileName.toStdString().c_str());
qInfo(logImageTool) << "file name:" << fileName;
QString szPlugins = dir.absoluteFilePath(fileName);
QPluginLoader loader(szPlugins);
QObject *plugin = loader.instance();
......@@ -316,11 +319,14 @@ int CImageTool::FindPlugins(QDir dir, QStringList filters)
m_pConverFormat = qobject_cast<CConverFormat*>(plugin);
if(m_pConverFormat)
{
qInfo(logImageTool) << "Load conver format plugin:"
<< m_pConverFormat->getName();
return 0;
}
}else{
LOG_MODEL_ERROR("CImageTool", "load plugin error:%s",
loader.errorString().toStdString().c_str());
} else {
qCritical(logImageTool) << "Load plugin error:"
<< loader.errorString()
<< "file:" << szPlugins;
}
}
......
#include "Landmarker.h"
#include "Log.h"
CLandmarker::CLandmarker(CFace *pFace, QObject *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 "Performance.h"
#include "Log.h"
#include <QLoggingCategory>
Q_LOGGING_CATEGORY(logFFMPGE, "FFMPGE")
//设置日志的回调函数
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)
......@@ -39,7 +41,7 @@ AVPixelFormat CConverFormatFFmpeg::QVideoFrameFormatToFFMpegPixFormat(
return AV_PIX_FMT_YUV420P;
case QVideoFrame::Format_YV12:
default:
LOG_MODEL_ERROR("CConverFormatFFmpeg", "Don't conver format: %d", format);
qCritical(logFFMPGE, "Don't conver format: %d", format);
return AV_PIX_FMT_NONE;
}
}
......@@ -94,7 +96,7 @@ int CConverFormatFFmpeg::ConvertFormat(/*[in]*/ const AVPicture &inFrame,
NULL, NULL, NULL);
if(NULL == pSwsCtx)
{
LOG_MODEL_ERROR("Tool", "sws_getContext false");
qCritical(logFFMPGE) << "sws_getContext false";
return -3;
}
......@@ -105,7 +107,7 @@ int CConverFormatFFmpeg::ConvertFormat(/*[in]*/ const AVPicture &inFrame,
outFrame.data, outFrame.linesize);
if(nRet < 0)
{
LOG_MODEL_ERROR("Tool", "sws_scale fail:%x", nRet);
qCritical(logFFMPGE) << "sws_scale fail:" << nRet;
}
else
{
......@@ -137,7 +139,7 @@ QImage CConverFormatFFmpeg::onConverFormatToRGB888(const QVideoFrame &frame)
img.height());
if(nRet < 0)
{
LOG_MODEL_ERROR("CConverFormatFFmpeg", "avpicture_get_size fail:%d", nRet);
qCritical(logFFMPGE) << "avpicture_get_size fail:" << nRet;
break;
}
nRet = avpicture_fill(&inPic, videoFrame.bits(),
......@@ -146,7 +148,7 @@ QImage CConverFormatFFmpeg::onConverFormatToRGB888(const QVideoFrame &frame)
videoFrame.height());
if(nRet < 0)
{
LOG_MODEL_ERROR("CConverFormatFFmpeg", "avpicture_fill is fail");
qCritical(logFFMPGE) << "avpicture_fill is fail";
break;
}
......
#include "ConverFormatOpenCV.h"
#include "Performance.h"
#include "Log.h"
#if OpenCV_VERSION_MAJOR == 3 || OpenCV_VERSION_MAJOR == 2
#include "opencv/cv.hpp"
......@@ -8,6 +7,9 @@
#include "opencv2/opencv.hpp"
#endif
#include <QLoggingCategory>
Q_LOGGING_CATEGORY(logImageTool, "CConverFormatOpenCV")
CConverFormatOpenCV::CConverFormatOpenCV(QObject *parent) : CConverFormat(parent)
{}
......@@ -19,7 +21,7 @@ QImage CConverFormatOpenCV::onConverFormatToRGB888(const QVideoFrame &frame)
return img;
if(!videoFrame.map(QAbstractVideoBuffer::ReadOnly))
{
LOG_MODEL_ERROR("CImageTool", "videoFrame.map fail");
qCritical(logImageTool) << "videoFrame.map fail";
return img;
}
PERFORMANCE(OpenCVConverFormatToRGB888)
......@@ -101,8 +103,8 @@ QImage CConverFormatOpenCV::onConverFormatToRGB888(const QVideoFrame &frame)
default:
LOG_MODEL_WARNING("CImageTool", "OpenCVConverFormatToRGB888 Don't conver format: %d",
videoFrame.pixelFormat());
qWarning(logImageTool) << "OpenCVConverFormatToRGB888 Don't conver format:"
<< videoFrame.pixelFormat();
}
}while(0);
......
......@@ -77,6 +77,7 @@ if(NOT ANDROID)
set(INSTALL_PATH ${INSTALL_FACE_RECOGNIZER_PLUGS_DIR}/Face)
endif()
ADD_PLUGIN_TARGET(NAME ${PROJECT_NAME}
NO_TRANSLATION
SOURCE_FILES ${SOURCES_FILES} ${HEADER_FILES}
PRIVATE_LIBS ${SeetaFace_LIBRARIES} FaceRecognizer
OUTPUT_DIR ${FACE_RECOGNIZER_PLUGS_BINARY_DIR}/Face
......
#include "DetectorSeeta.h"
#include "Log.h"
#include "Performance.h"
#include <QDir>
#include <QDebug>
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(log)
CDetectorSeeta::CDetectorSeeta(CFace *pFace, QObject *parent)
: CDetector(pFace, parent)
......@@ -73,7 +74,7 @@ int CDetectorSeeta::UpdateParameter()
break;
default:
QString szErr = "Don't support device " + QString::number(getDevice());
LOG_MODEL_ERROR("CDetectorSeeta", szErr.toStdString().c_str());
qCritical(log) << szErr;
break;
}
......@@ -90,7 +91,7 @@ int CDetectorSeeta::UpdateParameter()
m_Dector = QSharedPointer<seeta::FaceDetector>(new seeta::FaceDetector(model));
} catch (...) {
QString szErr = "Load model fail:" + szFile;
LOG_MODEL_ERROR("CDetectorSeeta", szErr.toStdString().c_str());
qCritical(log) << szErr;
return -2;
}
m_Dector->set(seeta::FaceDetector::PROPERTY_MIN_FACE_SIZE, getMinFaceSize());
......
#include "FaceSeeta2.h"
#include "Log.h"
#include "DetectorSeeta.h"
#include "TrackerSeeta.h"
#include "LandmarkerSeeta.h"
......@@ -8,6 +7,9 @@
#include "FaceToolsSeeta.h"
#include <QDir>
#include <QLoggingCategory>
Q_LOGGING_CATEGORY(log, "Seeta2")
CFaceSeeta2::CFaceSeeta2(QObject *parent) : CFace(parent)
{}
......
#include "FaceToolsSeeta.h"
#include "Log.h"
#include "Performance.h"
#include "Face.h"
......
#include "LandmarkerSeeta.h"
#include "Log.h"
#include "Performance.h"
#include <QDir>
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(log)
CLandmarkerSeeta::CLandmarkerSeeta(CFace *pFace, QObject *parent)
: CLandmarker(pFace, parent)
......@@ -27,7 +29,7 @@ int CLandmarkerSeeta::UpdateParameter()
default:
QString szErr = "Don't support device" +
QString::number(getDevice());
LOG_MODEL_ERROR("CLandmarkerSeeta", szErr.toStdString().c_str());
qCritical(log) << szErr.toStdString().c_str();
break;
}
......@@ -50,7 +52,7 @@ int CLandmarkerSeeta::UpdateParameter()
new seeta::FaceLandmarker(model));
} catch (...) {
QString szErr = "Load model fail:" + szFile;
LOG_MODEL_ERROR("CLandmarkerSeeta", szErr.toStdString().c_str());
qCritical(log) << szErr;
return -1;
}
m_bInit = true;
......
#include "RecognizerSeeta.h"
#include "Log.h"
#include "RabbitCommonDir.h"
#include "Performance.h"
#include "FaceSeeta2.h"
#include <QDir>
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(log)
CRecognizerSeeta::CRecognizerSeeta(CFace *pFace, QObject *parent)
: CRecognizer(pFace, parent)
......@@ -32,7 +34,7 @@ int CRecognizerSeeta::UpdateParameter()
default:
QString szErr = "Don't support device %d" +
QString::number(getDevice());
LOG_MODEL_ERROR("CDetectorSeeta", szErr.toStdString().c_str());
qCritical(log) << szErr;
break;
}
......@@ -50,12 +52,12 @@ int CRecognizerSeeta::UpdateParameter()
if(!m_Recognizer)
{
QString szErr = "new seeta::FaceDatabase fail";
LOG_MODEL_ERROR("CRecognizerSeeta", szErr.toStdString().c_str());
qCritical(log) << szErr;
return -2;
}
} catch (...) {
QString szErr = "Load model fail:" + szFile;
LOG_MODEL_ERROR("CRecognizerSeeta", szErr.toStdString().c_str());
qCritical(log) << szErr;
return -3;
}
......@@ -72,7 +74,7 @@ qint64 CRecognizerSeeta::Register(const QImage &image, const QRect &face)
QVector<QPointF> points;
if(m_pFace->GetLandmarker()->Mark(image, face, points))
{
LOG_MODEL_ERROR("RecognizerSeeta", "GetLandmarker()->Mark fail");
qCritical(log) << "GetLandmarker()->Mark fail";
return -1;
}
......@@ -110,7 +112,7 @@ qint64 CRecognizerSeeta::Register(const QImage &image,
index = m_Recognizer->Register(data, p.data());
PERFORMANCE_ADD_TIME(SeetaRegister, "Register")
if(!img.rgbSwapped().save(GetRegisterImage(index)))
LOG_MODEL_ERROR("CRecognizerSeeta", "Save register image fail");
qCritical(log) << "Save register image fail";
return index;
}
......@@ -135,7 +137,7 @@ qint64 CRecognizerSeeta::Query(const QImage &image, const QRect &face)
QVector<QPointF> points;
if(m_pFace->GetLandmarker()->Mark(image, face, points))
{
LOG_MODEL_ERROR("RecognizerSeeta", "GetLandmarker()->Mark fail");
qCritical(log) << "GetLandmarker()->Mark fail";
return -1;
}
......
#include "TrackerSeeta.h"
#include "Log.h"
#include "Performance.h"
#include <QDir>
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(log)
CTrackerSeeta::CTrackerSeeta(CFace *pFace, QObject *parent)
: CTracker(pFace, parent)
......@@ -24,7 +26,7 @@ int CTrackerSeeta::UpdateParameter()
default:
QString szErr = "Don't support device %d" +
QString::number(getDevice());
LOG_MODEL_ERROR("CDetectorSeeta", szErr.toStdString().c_str());
qCritical(log) << szErr;
break;
}
......@@ -42,7 +44,7 @@ int CTrackerSeeta::UpdateParameter()
m_Tracker = QSharedPointer<seeta::FaceTracker>(new seeta::FaceTracker(model));
}catch(...){
QString szErr = "Load model fail:" + szFile;
LOG_MODEL_ERROR("CTrackerSeeta", szErr.toStdString().c_str());
qCritical(log) << szErr;
return -2;
}
m_Tracker->set(seeta::FaceTracker::PROPERTY_VIDEO_STABLE, 1);
......
#include "Recognizer.h"
#include <QDir>
#include "Log.h"
#include "RabbitCommonDir.h"
CRecognizer::CRecognizer(CFace *pFace, QObject *parent)
......
#include "Tracker.h"
#include "Log.h"
static int gTrackStrFaceId = qRegisterMetaType<CTracker::strFace>();
static int gVectorTrackStrFaceId = qRegisterMetaType<QVector<CTracker::strFace> >();
......
#include "Database.h"
#include "RabbitCommonDir.h"
#include "Log.h"
#include <QDebug>
#include <QSqlError>
......@@ -13,6 +12,10 @@
#include <stdexcept>
#include <QLoggingCategory>
Q_LOGGING_CATEGORY(logDB, "DB")
CDatabase::CDatabase(QObject *parent)
: QObject(parent)
{
......@@ -37,9 +40,9 @@ int CDatabase::InitDatabase()
{
if(!m_Database.open())
{
LOG_MODEL_ERROR("CDatabase", "Open database fail: %s; %s",
m_Database.lastError().text().toStdString().c_str(),
m_szFile.toStdString().c_str());
qCritical(logDB) << "Open database fail:"
<< m_Database.lastError().text()
<< m_szFile;
return m_Database.lastError().nativeErrorCode().toInt();
}
#if defined (_DEBUG) || defined(DEBUG)
......@@ -55,11 +58,11 @@ int CDatabase::InitDatabase()
QStringList sql = szSql.split(";");
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)
{
LOG_MODEL_ERROR("CDatabase", "Create database fail: %s",
m_Database.lastError().text().toStdString().c_str());
qCritical(logDB) << "Create database fail:"
<< m_Database.lastError().text();
file.close();
m_Database.close();
QDir d;
......@@ -74,8 +77,8 @@ int CDatabase::InitDatabase()
if(!m_Database.open())
{
LOG_MODEL_ERROR("CDatabase", "Open database fail: %s",
m_Database.lastError().text().toStdString().c_str());
qCritical(logDB) << "Open database fail:"
<< m_Database.lastError().text();
return -2;
}
......
#include "TableRegister.h"
#include "RabbitCommonDir.h"
#include "Log.h"
#include <QDebug>
#include <QSqlError>
......@@ -11,6 +10,10 @@
#include <QMetaClassInfo>
#include <QVariant>
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(logDB)
CTableRegister::CTableRegister(QObject *parent) : QObject(parent)
{
}
......@@ -32,7 +35,7 @@ int CTableRegister::Register(qint64 index, CDataRegister *pData)
if(!m_Database.isOpen())
{
LOG_MODEL_ERROR("CTableRegister", "database isn't open");
qCritical(logDB) << "database isn't open";
return -3;
}
......@@ -59,12 +62,11 @@ int CTableRegister::Register(qint64 index, CDataRegister *pData)
}
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);
if(!query.exec(szSql))
{
LOG_MODEL_ERROR("CDatabase", "Register fail: %s",
m_Database.lastError().text().toStdString().c_str());
qCritical(logDB) << "Register fail:" << m_Database.lastError().text();
return m_Database.lastError().nativeErrorCode().toInt();
}
return nRet;
......@@ -76,7 +78,7 @@ int CTableRegister::Delete(qint64 index)
if(!m_Database.isOpen())
{
LOG_MODEL_ERROR("CTableRegister", "database isn't open");
qCritical(logDB) << "database isn't open";
return -1;
}
......@@ -85,8 +87,7 @@ int CTableRegister::Delete(qint64 index)
QSqlQuery query(m_Database);
if(!query.exec(szSql))
{
LOG_MODEL_ERROR("CDatabase", "Register fail: %s",
m_Database.lastError().text().toStdString().c_str());
qCritical(logDB) << "Register fail:" << m_Database.lastError().text();
return m_Database.lastError().nativeErrorCode().toInt();
}
return nRet;
......@@ -100,7 +101,7 @@ int CTableRegister::GetRegisterInfo(qint64 index, CDataRegister *pData)
if(!m_Database.isOpen())
{
LOG_MODEL_ERROR("CTableRegister", "database isn't open");
qCritical(logDB) << "database isn't open";
return -2;
}
......@@ -109,9 +110,8 @@ int CTableRegister::GetRegisterInfo(qint64 index, CDataRegister *pData)
QSqlQuery query(m_Database);
if(!query.exec(szSql))
{
LOG_MODEL_ERROR("CDatabase", "Register fail: %s; sql: %s",
m_Database.lastError().text().toStdString().c_str(),
szSql.toStdString().c_str());
qCritical(logDB) << "Register fail:" << m_Database.lastError().text()
<< "sql:" << szSql;
return m_Database.lastError().nativeErrorCode().toInt();
}
while (query.next()) {
......@@ -141,9 +141,8 @@ bool CTableRegister::IsExistNo(qint64 no)
QSqlQuery query(m_Database);
if(!query.exec(szSql))
{
LOG_MODEL_ERROR("CDatabase", "Register fail: %s; sql: %s",
m_Database.lastError().text().toStdString().c_str(),
szSql.toStdString().c_str());
qCritical(logDB) << "Register fail:"
<< m_Database.lastError().text() << "sql:" << szSql;
return false;
}
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.
先完成此消息的编辑!
想要评论请 注册