@@ -746,15 +746,17 @@ bool WsjcppCore::recoursiveRemoveDir(const std::string& sDir) {
746746// ---------------------------------------------------------------------
747747// WsjcppLog
748748
749- // Last log messages
750- std::deque<std::string> * WsjcppLog::g_WSJCPP_LOG_LAST_MESSAGES = nullptr ;
751749std::mutex * WsjcppLog::g_WSJCPP_LOG_MUTEX = nullptr ;
752750std::string WsjcppLog::g_WSJCPP_LOG_DIR = " ./" ;
753751std::string WsjcppLog::g_WSJCPP_LOG_FILE = " " ;
754752std::string WsjcppLog::g_WSJCPP_LOG_PREFIX_FILE = " " ;
753+ bool WsjcppLog::g_WSJCPP_ENABLE_LOG_FILE = true ;
755754long WsjcppLog::g_WSJCPP_LOG_START_TIME = 0 ;
756755long WsjcppLog::g_WSJCPP_LOG_ROTATION_PERIOD_IN_SECONDS = 51000 ;
757756
757+ // Last log messages
758+ std::deque<std::string> * WsjcppLog::g_WSJCPP_LOG_LAST_MESSAGES = nullptr ;
759+
758760// ---------------------------------------------------------------------
759761
760762void WsjcppLog::doLogRotateUpdateFilename (bool bForce) {
@@ -820,6 +822,11 @@ std::vector<std::string> WsjcppLog::getLastLogMessages() {
820822
821823void WsjcppLog::setLogDirectory (const std::string &sDirectoryPath ) {
822824 WsjcppLog::g_WSJCPP_LOG_DIR = sDirectoryPath ;
825+ if (!WsjcppCore::dirExists (WsjcppLog::g_WSJCPP_LOG_DIR)) {
826+ if (!WsjcppCore::makeDir (WsjcppLog::g_WSJCPP_LOG_DIR)) {
827+ WsjcppLog::err (" setLogDirectory" , " Could not create log directory '" + sDirectoryPath + " '" );
828+ }
829+ }
823830 WsjcppLog::doLogRotateUpdateFilename (true );
824831}
825832
@@ -832,9 +839,14 @@ void WsjcppLog::setPrefixLogFile(const std::string &sPrefixLogFile) {
832839
833840// ---------------------------------------------------------------------
834841
842+ void WsjcppLog::setEnableLogFile (bool bEnable) {
843+ WsjcppLog::g_WSJCPP_ENABLE_LOG_FILE = bEnable;
844+ }
845+
846+ // ---------------------------------------------------------------------
847+
835848void WsjcppLog::setRotationPeriodInSec (long nRotationPeriodInSec) {
836849 WsjcppLog::g_WSJCPP_LOG_ROTATION_PERIOD_IN_SECONDS = nRotationPeriodInSec;
837-
838850}
839851
840852// ---------------------------------------------------------------------
@@ -876,15 +888,18 @@ void WsjcppLog::add(WsjcppColorModifier &clr, const std::string &sType, const st
876888 while (g_WSJCPP_LOG_LAST_MESSAGES->size () > 50 ) {
877889 g_WSJCPP_LOG_LAST_MESSAGES->pop_back ();
878890 }
879- // TODO try create global variable
880- std::ofstream logFile (WsjcppLog::g_WSJCPP_LOG_FILE, std::ios::app);
881- if (!logFile) {
882- std::cout << " Error Opening File" << std::endl;
883- return ;
884- }
885891
886- logFile << sLogMessage << std::endl;
887- logFile.close ();
892+ // log file
893+ if (WsjcppLog::g_WSJCPP_ENABLE_LOG_FILE) {
894+ std::ofstream logFile (WsjcppLog::g_WSJCPP_LOG_FILE, std::ios::app);
895+ if (!logFile) {
896+ std::cout << " Error Opening File" << std::endl;
897+ return ;
898+ }
899+
900+ logFile << sLogMessage << std::endl;
901+ logFile.close ();
902+ }
888903}
889904
890905
0 commit comments