@@ -299,17 +299,19 @@ std::vector<std::string> WsjcppCore::getListOfFiles(const std::string &sDirname)
299
299
return vFiles;
300
300
}
301
301
DIR *dir = opendir (sDirname .c_str ());
302
- struct dirent *entry = readdir (dir);
303
- while (entry != NULL ) {
304
- if (entry->d_type != DT_DIR) {
305
- std::string sDir (entry->d_name );
306
- if (sDir != " ." && sDir != " .." ) {
307
- vFiles.push_back (sDir );
302
+ if (dir != NULL ) {
303
+ struct dirent *entry = readdir (dir);
304
+ while (entry != NULL ) {
305
+ if (entry->d_type != DT_DIR) {
306
+ std::string sDir (entry->d_name );
307
+ if (sDir != " ." && sDir != " .." ) {
308
+ vFiles.push_back (sDir );
309
+ }
308
310
}
311
+ entry = readdir (dir);
309
312
}
310
- entry = readdir (dir);
313
+ closedir (dir);
311
314
}
312
- closedir (dir);
313
315
return vFiles;
314
316
}
315
317
@@ -756,30 +758,31 @@ bool WsjcppCore::recoursiveRemoveDir(const std::string& sDir) {
756
758
// ---------------------------------------------------------------------
757
759
// WsjcppLog
758
760
759
- std::mutex * WsjcppLog::g_WSJCPP_LOG_MUTEX = nullptr ;
760
- std::string WsjcppLog::g_WSJCPP_LOG_DIR = " ./" ;
761
- std::string WsjcppLog::g_WSJCPP_LOG_FILE = " " ;
762
- std::string WsjcppLog::g_WSJCPP_LOG_PREFIX_FILE = " " ;
763
- bool WsjcppLog::g_WSJCPP_ENABLE_LOG_FILE = true ;
764
- long WsjcppLog::g_WSJCPP_LOG_START_TIME = 0 ;
765
- long WsjcppLog::g_WSJCPP_LOG_ROTATION_PERIOD_IN_SECONDS = 51000 ;
766
-
767
- // Last log messages
768
- std::deque<std::string> * WsjcppLog::g_WSJCPP_LOG_LAST_MESSAGES = nullptr ;
761
+ WsjcppLogGlobalConf::WsjcppLogGlobalConf () {
762
+ //
763
+ logDir = " ./" ;
764
+ logPrefixFile = " " ;
765
+ logFile = " " ;
766
+ enableLogFile = true ;
767
+ logStartTime = 0 ;
768
+ logRotationPeriodInSeconds = 51000 ;
769
+ }
769
770
770
771
// ---------------------------------------------------------------------
771
772
772
- void WsjcppLog ::doLogRotateUpdateFilename (bool bForce) {
773
+ void WsjcppLogGlobalConf ::doLogRotateUpdateFilename (bool bForce) {
773
774
long t = WsjcppCore::currentTime_seconds ();
774
- long nEverySeconds = WsjcppLog::g_WSJCPP_LOG_ROTATION_PERIOD_IN_SECONDS ; // rotate log if started now or if time left more then 1 day
775
- if (g_WSJCPP_LOG_START_TIME == 0 || t - g_WSJCPP_LOG_START_TIME > nEverySeconds || bForce) {
776
- g_WSJCPP_LOG_START_TIME = t;
777
- g_WSJCPP_LOG_FILE = g_WSJCPP_LOG_DIR + " /"
778
- + WsjcppLog::g_WSJCPP_LOG_PREFIX_FILE + " _"
779
- + WsjcppCore::formatTimeForFilename (g_WSJCPP_LOG_START_TIME ) + " .log" ;
775
+ long nEverySeconds = logRotationPeriodInSeconds ; // rotate log if started now or if time left more then 1 day
776
+ if (logStartTime == 0 || t - logStartTime > nEverySeconds || bForce) {
777
+ logStartTime = t;
778
+ logFile = logDir + " /"
779
+ + logPrefixFile + " _"
780
+ + WsjcppCore::formatTimeForFilename (logStartTime ) + " .log" ;
780
781
}
781
782
}
782
783
784
+ WsjcppLogGlobalConf WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF;
785
+
783
786
// ---------------------------------------------------------------------
784
787
785
788
void WsjcppLog::info (const std::string & sTag , const std::string &sMessage ) {
@@ -819,89 +822,67 @@ void WsjcppLog::ok(const std::string &sTag, const std::string &sMessage) {
819
822
// ---------------------------------------------------------------------
820
823
821
824
std::vector<std::string> WsjcppLog::getLastLogMessages () {
822
- WsjcppLog::initGlobalVariables ();
823
- std::lock_guard<std::mutex> lock (*WsjcppLog::g_WSJCPP_LOG_MUTEX);
825
+ std::lock_guard<std::mutex> lock (WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.logMutex );
824
826
std::vector<std::string> vRet;
825
- for (int i = 0 ; i < g_WSJCPP_LOG_LAST_MESSAGES-> size (); i++) {
826
- vRet.push_back (g_WSJCPP_LOG_LAST_MESSAGES-> at (i) );
827
+ for (int i = 0 ; i < WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF. logLastMessages . size (); i++) {
828
+ vRet.push_back (WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF. logLastMessages [i] );
827
829
}
828
830
return vRet;
829
831
}
830
832
831
833
// ---------------------------------------------------------------------
832
834
833
835
void WsjcppLog::setLogDirectory (const std::string &sDirectoryPath ) {
834
- WsjcppLog::g_WSJCPP_LOG_DIR = sDirectoryPath ;
835
- if (!WsjcppCore::dirExists (WsjcppLog::g_WSJCPP_LOG_DIR )) {
836
- if (!WsjcppCore::makeDir (WsjcppLog::g_WSJCPP_LOG_DIR )) {
836
+ WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF. logDir = sDirectoryPath ;
837
+ if (!WsjcppCore::dirExists (sDirectoryPath )) {
838
+ if (!WsjcppCore::makeDir (sDirectoryPath )) {
837
839
WsjcppLog::err (" setLogDirectory" , " Could not create log directory '" + sDirectoryPath + " '" );
838
840
}
839
841
}
840
- WsjcppLog::doLogRotateUpdateFilename (true );
842
+ WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF. doLogRotateUpdateFilename (true );
841
843
}
842
844
843
845
// ---------------------------------------------------------------------
844
846
845
847
void WsjcppLog::setPrefixLogFile (const std::string &sPrefixLogFile ) {
846
- WsjcppLog::g_WSJCPP_LOG_PREFIX_FILE = sPrefixLogFile ;
847
- WsjcppLog::doLogRotateUpdateFilename (true );
848
+ WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF. logPrefixFile = sPrefixLogFile ;
849
+ WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF. doLogRotateUpdateFilename (true );
848
850
}
849
851
850
852
// ---------------------------------------------------------------------
851
853
852
854
void WsjcppLog::setEnableLogFile (bool bEnable) {
853
- WsjcppLog::g_WSJCPP_ENABLE_LOG_FILE = bEnable;
855
+ WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF. enableLogFile = bEnable;
854
856
}
855
857
856
858
// ---------------------------------------------------------------------
857
859
858
860
void WsjcppLog::setRotationPeriodInSec (long nRotationPeriodInSec) {
859
- WsjcppLog::g_WSJCPP_LOG_ROTATION_PERIOD_IN_SECONDS = nRotationPeriodInSec;
860
- }
861
-
862
- // ---------------------------------------------------------------------
863
-
864
- void WsjcppLog::initGlobalVariables () {
865
- // create deque if not created
866
- if (WsjcppLog::g_WSJCPP_LOG_LAST_MESSAGES == nullptr ) {
867
- WsjcppLog::g_WSJCPP_LOG_LAST_MESSAGES = new std::deque<std::string>();
868
- // std::cout << WsjcppCore::currentTime_logformat() + ", " + WsjcppCore::threadId() + " Init last messages deque\r\n";
869
- }
870
- // create mutex if not created
871
- if (WsjcppLog::g_WSJCPP_LOG_MUTEX == nullptr ) {
872
- WsjcppLog::g_WSJCPP_LOG_MUTEX = new std::mutex ();
873
- // std::cout << WsjcppCore::currentTime_logformat() + ", " + WsjcppCore::threadId() + " Init mutex for log\r\n";
874
- }
875
- }
876
-
877
- // ---------------------------------------------------------------------
878
-
879
- void WsjcppLog::deinitGlobalVariables () {
880
- delete WsjcppLog::g_WSJCPP_LOG_LAST_MESSAGES;
881
- delete WsjcppLog::g_WSJCPP_LOG_MUTEX;
861
+ WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.logRotationPeriodInSeconds = nRotationPeriodInSec;
882
862
}
883
863
884
864
// ---------------------------------------------------------------------
885
865
886
866
void WsjcppLog::add (WsjcppColorModifier &clr, const std::string &sType , const std::string &sTag , const std::string &sMessage ) {
887
- WsjcppLog::initGlobalVariables ();
888
- WsjcppLog::doLogRotateUpdateFilename ();
867
+ WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.doLogRotateUpdateFilename ();
889
868
890
- std::lock_guard<std::mutex> lock (* WsjcppLog::g_WSJCPP_LOG_MUTEX );
869
+ std::lock_guard<std::mutex> lock (WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF. logMutex );
891
870
WsjcppColorModifier def (WsjcppColorCode::FG_DEFAULT);
892
871
893
872
std::string sLogMessage = WsjcppCore::currentTime_logformat () + " , " + WsjcppCore::threadId ()
894
873
+ " [" + sType + " ] " + sTag + " : " + sMessage ;
895
874
std::cout << clr << sLogMessage << def << std::endl;
896
875
897
- g_WSJCPP_LOG_LAST_MESSAGES->push_front (sLogMessage );
898
- while (g_WSJCPP_LOG_LAST_MESSAGES->size () > 50 ) {
899
- g_WSJCPP_LOG_LAST_MESSAGES->pop_back ();
876
+ WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.logLastMessages .push_front (sLogMessage );
877
+
878
+
879
+ while (WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.logLastMessages .size () > 50 ) {
880
+ WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.logLastMessages .pop_back ();
900
881
}
901
882
902
- // log file
903
- if (WsjcppLog::g_WSJCPP_ENABLE_LOG_FILE ) {
904
- std::ofstream logFile (WsjcppLog::g_WSJCPP_LOG_FILE , std::ios::app);
883
+ // log file
884
+ if (WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF. enableLogFile ) {
885
+ std::ofstream logFile (WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF. logFile , std::ios::app);
905
886
if (!logFile) {
906
887
std::cout << " Error Opening File" << std::endl;
907
888
return ;
0 commit comments