@@ -96,6 +96,34 @@ std::string WSJCppCore::doNormalizePath(const std::string & sPath) {
9696
9797// ---------------------------------------------------------------------
9898
99+ std::string WSJCppCore::extractFilename (const std::string &sPath ) {
100+ // split path by /
101+ std::vector<std::string> vNames;
102+ std::string s = " " ;
103+ int nStrLen = sPath .length ();
104+ for (int i = 0 ; i < sPath .length (); i++) {
105+ if (sPath [i] == ' /' ) {
106+ vNames.push_back (s);
107+ s = " " ;
108+ if (i == nStrLen-1 ) {
109+ vNames.push_back (" " );
110+ }
111+ } else {
112+ s += sPath [i];
113+ }
114+ }
115+ if (s != " " ) {
116+ vNames.push_back (s);
117+ }
118+ std::string sRet ;
119+ if (vNames.size () > 0 ) {
120+ sRet = vNames[vNames.size ()-1 ];
121+ }
122+ return sRet ;
123+ }
124+
125+ // ---------------------------------------------------------------------
126+
99127std::string WSJCppCore::getCurrentDirectory () {
100128 char cwd[PATH_MAX];
101129 if (getcwd (cwd, sizeof (cwd)) == NULL ) {
@@ -275,20 +303,20 @@ bool WSJCppCore::makeDir(const std::string &sDirname) {
275303 std::cout << " FAILED create folder " << sDirname << std::endl;
276304 return false ;
277305 }
278- std::cout << " nStatus: " << nStatus << std::endl;
306+ // std::cout << "nStatus: " << nStatus << std::endl;
279307 return true ;
280308}
281309
282310// ---------------------------------------------------------------------
283311
284312bool WSJCppCore::writeFile (const std::string &sFilename , const std::string &sContent ) {
285313
286- std::ofstream f (sFilename , std::ifstream::in);
314+ // std::ofstream f(sFilename, std::ifstream::in);
315+ std::ofstream f (sFilename , std::ios::out);
287316 if (!f) {
288- std::cout << " FAILED could not create file to wtite " << sFilename << std::endl ;
317+ WSJCppLog::err ( " WSJCppCore " , " Could not create file to write ' " + sFilename + " ' " ) ;
289318 return false ;
290319 }
291-
292320 f << sContent << std::endl;
293321 f.close ();
294322 return true ;
@@ -380,21 +408,23 @@ std::string WSJCppCore::createUuid() {
380408// WSJCppLog
381409
382410// Last log messages
383- std::deque<std::string> *g_LAST_LOG_MESSAGES = NULL ;
384- std::mutex *g_LOG_MUTEX = NULL ;
385- std::string WSJCppLog::g_LOG_DIR = " ./" ;
386- std::string WSJCppLog::g_LOG_FILE = " " ;
387- std::string WSJCppLog::g_PREFIX_LOG_FILE = " " ;
388- long WSJCppLog::g_LOG_START_TIME = 0 ;
411+ std::deque<std::string> * WSJCppLog::g_WSJCPP_LOG_LAST_MESSAGES = nullptr ;
412+ std::mutex * WSJCppLog::g_WSJCPP_LOG_MUTEX = nullptr ;
413+ std::string WSJCppLog::g_WSJCPP_LOG_DIR = " ./" ;
414+ std::string WSJCppLog::g_WSJCPP_LOG_FILE = " " ;
415+ std::string WSJCppLog::g_WSJCPP_LOG_PREFIX_FILE = " " ;
416+ long WSJCppLog::g_WSJCPP_LOG_START_TIME = 0 ;
389417
390418// ---------------------------------------------------------------------
391419
392420void WSJCppLog::doLogRotateUpdateFilename (bool bForce) {
393421 long t = WSJCppCore::currentTime_seconds ();
394422 long nEverySeconds = 51000 ; // rotate log if started now or if time left more then 1 day
395- if (g_LOG_START_TIME == 0 || t - g_LOG_START_TIME > nEverySeconds || bForce) {
396- g_LOG_START_TIME = t;
397- g_LOG_FILE = g_LOG_DIR + " /" + WSJCppLog::g_PREFIX_LOG_FILE + " _" + WSJCppCore::formatTimeForFilename (g_LOG_START_TIME) + " .log" ;
423+ if (g_WSJCPP_LOG_START_TIME == 0 || t - g_WSJCPP_LOG_START_TIME > nEverySeconds || bForce) {
424+ g_WSJCPP_LOG_START_TIME = t;
425+ g_WSJCPP_LOG_FILE = g_WSJCPP_LOG_DIR + " /"
426+ + WSJCppLog::g_WSJCPP_LOG_PREFIX_FILE + " _"
427+ + WSJCppCore::formatTimeForFilename (g_WSJCPP_LOG_START_TIME) + " .log" ;
398428 }
399429}
400430
@@ -437,28 +467,28 @@ void WSJCppLog::ok(const std::string &sTag, const std::string &sMessage) {
437467// ---------------------------------------------------------------------
438468
439469void WSJCppLog::setLogDirectory (const std::string &sDirectoryPath ) {
440- WSJCppLog::g_LOG_DIR = sDirectoryPath ;
470+ WSJCppLog::g_WSJCPP_LOG_DIR = sDirectoryPath ;
441471 WSJCppLog::doLogRotateUpdateFilename (true );
442472}
443473
444474// ---------------------------------------------------------------------
445475
446476void WSJCppLog::setPrefixLogFile (const std::string &sPrefixLogFile ) {
447- WSJCppLog::g_PREFIX_LOG_FILE = sPrefixLogFile ;
477+ WSJCppLog::g_WSJCPP_LOG_PREFIX_FILE = sPrefixLogFile ;
448478 WSJCppLog::doLogRotateUpdateFilename (true );
449479}
450480
451481// ---------------------------------------------------------------------
452482
453483void WSJCppLog::initGlobalVariables () {
454484 // create deque if not created
455- if (g_LAST_LOG_MESSAGES == NULL ) {
456- g_LAST_LOG_MESSAGES = new std::deque<std::string>();
485+ if (WSJCppLog::g_WSJCPP_LOG_LAST_MESSAGES == nullptr ) {
486+ WSJCppLog::g_WSJCPP_LOG_LAST_MESSAGES = new std::deque<std::string>();
457487 // std::cout << WSJCppCore::currentTime_logformat() + ", " + WSJCppCore::threadId() + " Init last messages deque\r\n";
458488 }
459489 // create mutex if not created
460- if (g_LOG_MUTEX == NULL ) {
461- g_LOG_MUTEX = new std::mutex ();
490+ if (WSJCppLog::g_WSJCPP_LOG_MUTEX == nullptr ) {
491+ WSJCppLog::g_WSJCPP_LOG_MUTEX = new std::mutex ();
462492 // std::cout << WSJCppCore::currentTime_logformat() + ", " + WSJCppCore::threadId() + " Init mutex for log\r\n";
463493 }
464494}
@@ -469,19 +499,19 @@ void WSJCppLog::add(WSJCppColorModifier &clr, const std::string &sType, const st
469499 WSJCppLog::initGlobalVariables ();
470500 WSJCppLog::doLogRotateUpdateFilename ();
471501
472- std::lock_guard<std::mutex> lock (*g_LOG_MUTEX );
502+ std::lock_guard<std::mutex> lock (*WSJCppLog::g_WSJCPP_LOG_MUTEX );
473503 WSJCppColorModifier def (WSJCppColorCode::FG_DEFAULT);
474504
475505 std::string sLogMessage = WSJCppCore::currentTime_logformat () + " , " + WSJCppCore::threadId ()
476506 + " [" + sType + " ] " + sTag + " : " + sMessage ;
477507 std::cout << clr << sLogMessage << def << std::endl;
478508
479- g_LAST_LOG_MESSAGES ->push_front (sLogMessage );
480- while (g_LAST_LOG_MESSAGES ->size () > 50 ) {
481- g_LAST_LOG_MESSAGES ->pop_back ();
509+ g_WSJCPP_LOG_LAST_MESSAGES ->push_front (sLogMessage );
510+ while (g_WSJCPP_LOG_LAST_MESSAGES ->size () > 50 ) {
511+ g_WSJCPP_LOG_LAST_MESSAGES ->pop_back ();
482512 }
483513 // TODO try create global variable
484- std::ofstream logFile (WSJCppLog::g_LOG_FILE , std::ios::app);
514+ std::ofstream logFile (WSJCppLog::g_WSJCPP_LOG_FILE , std::ios::app);
485515 if (!logFile) {
486516 std::cout << " Error Opening File" << std::endl;
487517 return ;
@@ -490,3 +520,5 @@ void WSJCppLog::add(WSJCppColorModifier &clr, const std::string &sType, const st
490520 logFile << sLogMessage << std::endl;
491521 logFile.close ();
492522}
523+
524+
0 commit comments