mirror of
https://github.com/kerberos-io/openalpr-base.git
synced 2025-10-06 12:37:06 +08:00
Added logging library that functions in foreground and background (logs to file)
This commit is contained in:
@@ -78,6 +78,7 @@ TARGET_LINK_LIBRARIES(alprd
|
|||||||
support
|
support
|
||||||
uuid
|
uuid
|
||||||
curl
|
curl
|
||||||
|
log4cplus
|
||||||
${OpenCV_LIBS}
|
${OpenCV_LIBS}
|
||||||
${Tesseract_LIBS}
|
${Tesseract_LIBS}
|
||||||
)
|
)
|
||||||
|
@@ -12,6 +12,11 @@
|
|||||||
#include "uuid.h"
|
#include "uuid.h"
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
#include <log4cplus/logger.h>
|
||||||
|
#include <log4cplus/loggingmacros.h>
|
||||||
|
#include <log4cplus/configurator.h>
|
||||||
|
#include <log4cplus/consoleappender.h>
|
||||||
|
#include <log4cplus/fileappender.h>
|
||||||
|
|
||||||
// prototypes
|
// prototypes
|
||||||
void streamRecognitionThread(void* arg);
|
void streamRecognitionThread(void* arg);
|
||||||
@@ -45,6 +50,8 @@ struct UploadThreadData
|
|||||||
|
|
||||||
bool daemon_active;
|
bool daemon_active;
|
||||||
|
|
||||||
|
static log4cplus::Logger logger;
|
||||||
|
|
||||||
int main( int argc, const char** argv )
|
int main( int argc, const char** argv )
|
||||||
{
|
{
|
||||||
daemon_active = true;
|
daemon_active = true;
|
||||||
@@ -91,22 +98,33 @@ int main( int argc, const char** argv )
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log4cplus::BasicConfigurator config;
|
||||||
|
config.configure();
|
||||||
|
|
||||||
if (noDaemon == false)
|
if (noDaemon == false)
|
||||||
{
|
{
|
||||||
// Fork off into a separate daemon
|
// Fork off into a separate daemon
|
||||||
daemon(0, 0);
|
daemon(0, 0);
|
||||||
|
|
||||||
|
|
||||||
|
log4cplus::SharedAppenderPtr myAppender(new log4cplus::FileAppender(logFile));
|
||||||
|
myAppender->setName("alprd_appender");
|
||||||
// Redirect std out to log file
|
// Redirect std out to log file
|
||||||
|
logger = log4cplus::Logger::getInstance(LOG4CPLUS_TEXT("alprd"));
|
||||||
|
logger.addAppender(myAppender);
|
||||||
|
|
||||||
std::ofstream out(logFile.c_str());
|
|
||||||
std::cout.rdbuf(out.rdbuf());
|
|
||||||
std::cerr.rdbuf(out.rdbuf());
|
|
||||||
|
|
||||||
std::cout << "Running OpenALPR daemon in daemon mode." << std::endl;
|
LOG4CPLUS_INFO(logger, "Running OpenALPR daemon in daemon mode.");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::cout << "Running OpenALPR daemon in the foreground" << std::endl;
|
//log4cplus::SharedAppenderPtr myAppender(new log4cplus::ConsoleAppender());
|
||||||
|
//myAppender->setName("alprd_appender");
|
||||||
|
// Redirect std out to log file
|
||||||
|
logger = log4cplus::Logger::getInstance(LOG4CPLUS_TEXT("alprd"));
|
||||||
|
//logger.addAppender(myAppender);
|
||||||
|
|
||||||
|
LOG4CPLUS_INFO(logger, "Running OpenALPR daemon in the foreground.");
|
||||||
}
|
}
|
||||||
|
|
||||||
CSimpleIniA ini;
|
CSimpleIniA ini;
|
||||||
@@ -132,7 +150,7 @@ int main( int argc, const char** argv )
|
|||||||
|
|
||||||
if (stream_urls.size() == 0)
|
if (stream_urls.size() == 0)
|
||||||
{
|
{
|
||||||
std::cout << "No video streams defined in the configuration" << std::endl;
|
LOG4CPLUS_FATAL(logger, "No video streams defined in the configuration.");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -140,7 +158,7 @@ int main( int argc, const char** argv )
|
|||||||
std::string upload_url = ini.GetValue("daemon", "upload_address", "");
|
std::string upload_url = ini.GetValue("daemon", "upload_address", "");
|
||||||
std::string site_id = ini.GetValue("daemon", "site_id", "");
|
std::string site_id = ini.GetValue("daemon", "site_id", "");
|
||||||
|
|
||||||
std::cout << "Using: " << imageFolder << " for storing valid plate images" << std::endl;
|
LOG4CPLUS_INFO(logger, "Using: " << imageFolder << " for storing valid plate images");
|
||||||
|
|
||||||
for (int i = 0; i < stream_urls.size(); i++)
|
for (int i = 0; i < stream_urls.size(); i++)
|
||||||
{
|
{
|
||||||
@@ -172,8 +190,8 @@ void streamRecognitionThread(void* arg)
|
|||||||
{
|
{
|
||||||
CaptureThreadData* tdata = (CaptureThreadData*) arg;
|
CaptureThreadData* tdata = (CaptureThreadData*) arg;
|
||||||
|
|
||||||
std::cout << "country: " << tdata->country_code << " -- config file: " << tdata->config_file << std::endl;
|
LOG4CPLUS_INFO(logger, "country: " << tdata->country_code << " -- config file: " << tdata->config_file );
|
||||||
std::cout << "Stream " << tdata->camera_id << ": " << tdata->stream_url << std::endl;
|
LOG4CPLUS_INFO(logger, "Stream " << tdata->camera_id << ": " << tdata->stream_url);
|
||||||
|
|
||||||
Alpr alpr(tdata->country_code, tdata->config_file);
|
Alpr alpr(tdata->country_code, tdata->config_file);
|
||||||
|
|
||||||
@@ -188,7 +206,7 @@ void streamRecognitionThread(void* arg)
|
|||||||
|
|
||||||
std::vector<uchar> buffer;
|
std::vector<uchar> buffer;
|
||||||
|
|
||||||
std::cout << "Daemon active: " << daemon_active << std::endl;
|
LOG4CPLUS_INFO(logger, "Daemon active: " << daemon_active);
|
||||||
|
|
||||||
while (daemon_active)
|
while (daemon_active)
|
||||||
{
|
{
|
||||||
@@ -244,7 +262,7 @@ void streamRecognitionThread(void* arg)
|
|||||||
|
|
||||||
videoBuffer.disconnect();
|
videoBuffer.disconnect();
|
||||||
|
|
||||||
std::cout << "Video processing ended" << std::endl;
|
LOG4CPLUS_INFO(logger, "Video processing ended");
|
||||||
|
|
||||||
delete tdata;
|
delete tdata;
|
||||||
}
|
}
|
||||||
@@ -253,17 +271,17 @@ void streamRecognitionThread(void* arg)
|
|||||||
bool writeToQueue(std::string jsonResult)
|
bool writeToQueue(std::string jsonResult)
|
||||||
{
|
{
|
||||||
|
|
||||||
Beanstalk::Client client(BEANSTALK_QUEUE_HOST, BEANSTALK_PORT);
|
Beanstalk::Client client(BEANSTALK_QUEUE_HOST, BEANSTALK_PORT);
|
||||||
client.use(BEANSTALK_TUBE_NAME);
|
client.use(BEANSTALK_TUBE_NAME);
|
||||||
|
|
||||||
int id = client.put(jsonResult);
|
int id = client.put(jsonResult);
|
||||||
|
|
||||||
if (id <= 0)
|
if (id <= 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
std::cout << "put job id: " << id << std::endl;
|
LOG4CPLUS_INFO(logger, "put job id: " << id );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -290,16 +308,16 @@ void dataUploadThread(void* arg)
|
|||||||
|
|
||||||
if (job.id() > 0)
|
if (job.id() > 0)
|
||||||
{
|
{
|
||||||
//std::cout << job.body() << std::endl;
|
LOG4CPLUS_DEBUG(logger, job.body() );
|
||||||
if (uploadPost(udata->upload_url, job.body()))
|
if (uploadPost(udata->upload_url, job.body()))
|
||||||
{
|
{
|
||||||
client.del(job.id());
|
client.del(job.id());
|
||||||
std::cout << "Job: " << job.id() << " successfully uploaded" << std::endl;
|
LOG4CPLUS_INFO(logger, "Job: " << job.id() << " successfully uploaded" );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
client.release(job);
|
client.release(job);
|
||||||
std::cout << "Job: " << job.id() << " failed to upload. Will retry." << std::endl;
|
LOG4CPLUS_WARN(logger, "Job: " << job.id() << " failed to upload. Will retry." );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user