@@ -760,37 +760,29 @@ bool WsjcppCore::recoursiveRemoveDir(const std::string& sDir) {
760760
761761WsjcppLogGlobalConf::WsjcppLogGlobalConf () {
762762 //
763+ logDir = " ./" ;
764+ logPrefixFile = " " ;
765+ logFile = " " ;
766+ enableLogFile = true ;
767+ logStartTime = 0 ;
768+ logRotationPeriodInSeconds = 51000 ;
763769}
764770
765- WsjcppLogGlobalConf::~WsjcppLogGlobalConf () {
766- //
767- }
768-
769- WsjcppLogGlobalConf WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF;
770- // std::mutex * WsjcppLog::g_WSJCPP_LOG_MUTEX = nullptr;
771- std::string WsjcppLog::g_WSJCPP_LOG_DIR = " ./" ;
772- std::string WsjcppLog::g_WSJCPP_LOG_FILE = " " ;
773- std::string WsjcppLog::g_WSJCPP_LOG_PREFIX_FILE = " " ;
774- bool WsjcppLog::g_WSJCPP_ENABLE_LOG_FILE = true ;
775- long WsjcppLog::g_WSJCPP_LOG_START_TIME = 0 ;
776- long WsjcppLog::g_WSJCPP_LOG_ROTATION_PERIOD_IN_SECONDS = 51000 ;
777-
778- // Last log messages
779- std::deque<std::string> * WsjcppLog::g_WSJCPP_LOG_LAST_MESSAGES = nullptr ;
780-
781771// ---------------------------------------------------------------------
782772
783- void WsjcppLog ::doLogRotateUpdateFilename (bool bForce) {
773+ void WsjcppLogGlobalConf ::doLogRotateUpdateFilename (bool bForce) {
784774 long t = WsjcppCore::currentTime_seconds ();
785- long nEverySeconds = WsjcppLog::g_WSJCPP_LOG_ROTATION_PERIOD_IN_SECONDS ; // rotate log if started now or if time left more then 1 day
786- if (g_WSJCPP_LOG_START_TIME == 0 || t - g_WSJCPP_LOG_START_TIME > nEverySeconds || bForce) {
787- g_WSJCPP_LOG_START_TIME = t;
788- g_WSJCPP_LOG_FILE = g_WSJCPP_LOG_DIR + " /"
789- + WsjcppLog::g_WSJCPP_LOG_PREFIX_FILE + " _"
790- + 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" ;
791781 }
792782}
793783
784+ WsjcppLogGlobalConf WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF;
785+
794786// ---------------------------------------------------------------------
795787
796788void WsjcppLog::info (const std::string & sTag , const std::string &sMessage ) {
@@ -830,67 +822,49 @@ void WsjcppLog::ok(const std::string &sTag, const std::string &sMessage) {
830822// ---------------------------------------------------------------------
831823
832824std::vector<std::string> WsjcppLog::getLastLogMessages () {
833- WsjcppLog::initGlobalVariables ();
834825 std::lock_guard<std::mutex> lock (WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.logMutex );
835826 std::vector<std::string> vRet;
836- for (int i = 0 ; i < g_WSJCPP_LOG_LAST_MESSAGES-> size (); i++) {
837- 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] );
838829 }
839830 return vRet;
840831}
841832
842833// ---------------------------------------------------------------------
843834
844835void WsjcppLog::setLogDirectory (const std::string &sDirectoryPath ) {
845- WsjcppLog::g_WSJCPP_LOG_DIR = sDirectoryPath ;
846- if (!WsjcppCore::dirExists (WsjcppLog::g_WSJCPP_LOG_DIR )) {
847- 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 )) {
848839 WsjcppLog::err (" setLogDirectory" , " Could not create log directory '" + sDirectoryPath + " '" );
849840 }
850841 }
851- WsjcppLog::doLogRotateUpdateFilename (true );
842+ WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF. doLogRotateUpdateFilename (true );
852843}
853844
854845// ---------------------------------------------------------------------
855846
856847void WsjcppLog::setPrefixLogFile (const std::string &sPrefixLogFile ) {
857- WsjcppLog::g_WSJCPP_LOG_PREFIX_FILE = sPrefixLogFile ;
858- WsjcppLog::doLogRotateUpdateFilename (true );
848+ WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF. logPrefixFile = sPrefixLogFile ;
849+ WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF. doLogRotateUpdateFilename (true );
859850}
860851
861852// ---------------------------------------------------------------------
862853
863854void WsjcppLog::setEnableLogFile (bool bEnable) {
864- WsjcppLog::g_WSJCPP_ENABLE_LOG_FILE = bEnable;
855+ WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF. enableLogFile = bEnable;
865856}
866857
867858// ---------------------------------------------------------------------
868859
869860void WsjcppLog::setRotationPeriodInSec (long nRotationPeriodInSec) {
870- WsjcppLog::g_WSJCPP_LOG_ROTATION_PERIOD_IN_SECONDS = nRotationPeriodInSec;
871- }
872-
873- // ---------------------------------------------------------------------
874-
875- void WsjcppLog::initGlobalVariables () {
876- // create deque if not created
877- if (WsjcppLog::g_WSJCPP_LOG_LAST_MESSAGES == nullptr ) {
878- WsjcppLog::g_WSJCPP_LOG_LAST_MESSAGES = new std::deque<std::string>();
879- // std::cout << WsjcppCore::currentTime_logformat() + ", " + WsjcppCore::threadId() + " Init last messages deque\r\n";
880- }
881- }
882-
883- // ---------------------------------------------------------------------
884-
885- void WsjcppLog::deinitGlobalVariables () {
886- delete WsjcppLog::g_WSJCPP_LOG_LAST_MESSAGES;
861+ WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.logRotationPeriodInSeconds = nRotationPeriodInSec;
887862}
888863
889864// ---------------------------------------------------------------------
890865
891866void WsjcppLog::add (WsjcppColorModifier &clr, const std::string &sType , const std::string &sTag , const std::string &sMessage ) {
892- WsjcppLog::initGlobalVariables ();
893- WsjcppLog::doLogRotateUpdateFilename ();
867+ WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.doLogRotateUpdateFilename ();
894868
895869 std::lock_guard<std::mutex> lock (WsjcppLog::g_WSJCPP_LOG_GLOBAL_CONF.logMutex );
896870 WsjcppColorModifier def (WsjcppColorCode::FG_DEFAULT);
@@ -899,14 +873,16 @@ void WsjcppLog::add(WsjcppColorModifier &clr, const std::string &sType, const st
899873 + " [" + sType + " ] " + sTag + " : " + sMessage ;
900874 std::cout << clr << sLogMessage << def << std::endl;
901875
902- g_WSJCPP_LOG_LAST_MESSAGES->push_front (sLogMessage );
903- while (g_WSJCPP_LOG_LAST_MESSAGES->size () > 50 ) {
904- 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 ();
905881 }
906882
907- // log file
908- if (WsjcppLog::g_WSJCPP_ENABLE_LOG_FILE ) {
909- 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);
910886 if (!logFile) {
911887 std::cout << " Error Opening File" << std::endl;
912888 return ;
0 commit comments