CString CConfigMsgLogDlg::GetUniqueLogFilePath(void) { CString omStrFullPath = ""; std::string acPathBuffer = {L'\0'}; // Get current working char acFilePath[BM_MAX_PATH] = {L'\0'}; // Get current working GetCurrentVerBusMasterUserDataPath(acPathBuffer); BOOL bFound = TRUE; // Means - "found unique name" for (USHORT Count = 0; bFound == TRUE; Count++) { CString omNewLogFileName = ""; // New Log file name auto baseName = GetDefaultLogFileName(); omNewLogFileName.Format("%s_%d.log", baseName.c_str(), Count); PathCombine(acFilePath, acPathBuffer.c_str(), omNewLogFileName.GetBuffer(MAX_PATH)); omStrFullPath = acFilePath; // We have two different strings to compare. The first one is the bare // log file name and the second one is the full path. // Iterate through the list of existing logging blocks. If the same // file name has a hit, then try for another name. bFound = FoundInLogList(omStrFullPath, omNewLogFileName); } // At the end of this routine a unique log file should've been found. return omStrFullPath; }
void TConfiguration::Default() { TGuard Guard(FCriticalSection); FDisablePasswordStoring = false; FForceBanners = false; FDisableAcceptingHostKeys = false; std::unique_ptr<TRegistryStorage> AdminStorage(new TRegistryStorage(GetRegistryStorageKey(), HKEY_LOCAL_MACHINE)); try__finally { if (AdminStorage->OpenRootKey(false)) { LoadAdmin(AdminStorage.get()); AdminStorage->CloseSubKey(); } } __finally { // delete AdminStorage; }; SetRandomSeedFile(FDefaultRandomSeedFile); SetPuttyRegistryStorageKey(OriginalPuttyRegistryStorageKey); FConfirmOverwriting = true; FConfirmResume = true; FAutoReadDirectoryAfterOp = true; FSessionReopenAuto = 5000; FSessionReopenBackground = 2000; FSessionReopenTimeout = 0; FSessionReopenAutoStall = 60000; FTunnelLocalPortNumberLow = 50000; FTunnelLocalPortNumberHigh = 50099; FCacheDirectoryChangesMaxSize = 100; FShowFtpWelcomeMessage = false; FExternalIpAddress.Clear(); FTryFtpWhenSshFails = true; SetCollectUsage(FDefaultCollectUsage); FSessionReopenAutoMaximumNumberOfRetries = CONST_DEFAULT_NUMBER_OF_RETRIES; FDefaultCollectUsage = false; FLogging = false; FPermanentLogging = false; FLogFileName = GetDefaultLogFileName(); FPermanentLogFileName = FLogFileName; FLogFileAppend = true; FLogSensitive = false; FPermanentLogSensitive = FLogSensitive; FLogWindowLines = 100; FLogProtocol = 0; FPermanentLogProtocol = FLogProtocol; UpdateActualLogProtocol(); FLogActions = false; FPermanentLogActions = false; FActionsLogFileName = "%TEMP%" WGOOD_SLASH "&S.xml"; FPermanentActionsLogFileName = FActionsLogFileName; FProgramIniPathWrittable = -1; Changed(); }
CsuApp::CsuApp(): iRun(EFalse), iStopped(EFalse), iSystObs(*this) { // Default logfilename iLogFileName = GetDefaultLogFileName(); // Create Main window iMainWnd = new CsuMainWnd("MainWnd"); iMainWnd->Show(); iMainWnd->SetMenuObserver(this); // Create model iSpecFileName = KSpecFileName; iCaeEnv = CAE_Env::NewL(NULL, NULL, KSpecFileName, 1, NULL, iLogFileName.c_str()); // Create view iCagProv = new CagProvider(iMainWnd); iViewProxy = iCagProv->CreateViewProxy(); iCaeEnv->ConstructSystem(); iIsTempl = !IsSpecFileWrittable(); iViewProxy->SetRoot(iCaeEnv->RootCtrl()); iViewProxy->SetObj(iCaeEnv->RootCtrl()); iMainWnd->SetEnvLog(iLogFileName); iMainWnd->SetTitle(FormTitle(KSpecFileName)); iMainWnd->Maximize(); // Visualization window adapter iVisAdp = new CsuVisAdp("VisAdp", iCaeEnv); CAE_ConnPointBase* c_adinp = iCaeEnv->Root()->GetInpN("viswin"); if (c_adinp != NULL) { iVisAdp->ConnectWnd(c_adinp); } iVisAdp->SetWnd(iMainWnd->GetEnviw()); }
bool CLogger::AddLogV(LPCTSTR pszText,va_list Args) { if (pszText==NULL) return false; CBlockLock Lock(&m_Lock); TCHAR szText[MAX_LOG_TEXT_LENGTH]; StdUtil::vsnprintf(szText,lengthof(szText),pszText,Args); CLogItem *pLogItem=new CLogItem(szText); m_LogList.push_back(pLogItem); TRACE(TEXT("Log : %s\n"),szText); if (m_fOutputToFile) { TCHAR szFileName[MAX_PATH]; HANDLE hFile; GetDefaultLogFileName(szFileName); hFile=::CreateFile(szFileName,GENERIC_WRITE,FILE_SHARE_READ,NULL, OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); if (hFile!=INVALID_HANDLE_VALUE) { char szText[MAX_LOG_TEXT_LENGTH]; DWORD Length,Write; ::SetFilePointer(hFile,0,NULL,FILE_END); Length=pLogItem->Format(szText,lengthof(szText)-1); szText[Length++]='\r'; szText[Length++]='\n'; ::WriteFile(hFile,szText,Length,&Write,NULL); ::CloseHandle(hFile); } } return true; }
//--------------------------------------------------------------------- void TConfiguration::SetLogToFile(bool Value) { if (Value != GetLogToFile()) { SetLogFileName(Value ? GetDefaultLogFileName() : UnicodeString(L"")); Changed(); } }
bool CLogger::ReadSettings(CSettings &Settings) { CBlockLock Lock(&m_Lock); Settings.Read(TEXT("OutputLogToFile"),&m_fOutputToFile); if (m_fOutputToFile && m_LogList.size()>0) { TCHAR szFileName[MAX_PATH]; GetDefaultLogFileName(szFileName); SaveToFile(szFileName,true); } return true; }
INT_PTR CLogger::DlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: { HWND hwndList=GetDlgItem(hDlg,IDC_LOG_LIST); LVCOLUMN lvc; LVITEM lvi; ListView_SetExtendedListViewStyle(hwndList,LVS_EX_FULLROWSELECT | LVS_EX_LABELTIP); lvc.mask=LVCF_FMT | LVCF_WIDTH | LVCF_TEXT; lvc.fmt=LVCFMT_LEFT; lvc.cx=80; lvc.pszText=TEXT("日時"); ListView_InsertColumn(hwndList,0,&lvc); lvc.pszText=TEXT("内容"); ListView_InsertColumn(hwndList,1,&lvc); lvi.iItem=0; lvi.mask=LVIF_TEXT; m_Lock.Lock(); ListView_SetItemCount(hwndList,(int)m_LogList.size()); for (auto itr=m_LogList.begin();itr!=m_LogList.end();++itr) { const CLogItem *pLogItem=*itr; TCHAR szTime[64]; lvi.iSubItem=0; pLogItem->FormatTime(szTime,lengthof(szTime)); lvi.pszText=szTime; ListView_InsertItem(hwndList,&lvi); lvi.iSubItem=1; lvi.pszText=const_cast<LPTSTR>(pLogItem->GetText()); ListView_SetItem(hwndList,&lvi); lvi.iItem++; } for (int i=0;i<2;i++) ListView_SetColumnWidth(hwndList,i,LVSCW_AUTOSIZE_USEHEADER); if (!m_LogList.empty()) ListView_EnsureVisible(hwndList,(int)m_LogList.size()-1,FALSE); m_Lock.Unlock(); DlgCheckBox_Check(hDlg,IDC_LOG_OUTPUTTOFILE,m_fOutputToFile); } return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_LOG_CLEAR: ListView_DeleteAllItems(GetDlgItem(hDlg,IDC_LOG_LIST)); Clear(); return TRUE; case IDC_LOG_COPY: CopyToClipboard(GetAppClass().GetUICore()->GetMainWindow()); return TRUE; case IDC_LOG_SAVE: { TCHAR szFileName[MAX_PATH]; GetDefaultLogFileName(szFileName); if (!SaveToFile(szFileName,false)) { ::MessageBox(hDlg,TEXT("保存ができません。"),NULL,MB_OK | MB_ICONEXCLAMATION); } else { TCHAR szMessage[MAX_PATH+64]; StdUtil::snprintf(szMessage,lengthof(szMessage), TEXT("ログを \"%s\" に保存しました。"),szFileName); ::MessageBox(hDlg,szMessage,TEXT("ログ保存"),MB_OK | MB_ICONINFORMATION); } } return TRUE; } return TRUE; case WM_NOTIFY: switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: { bool fOutput=DlgCheckBox_IsChecked(hDlg,IDC_LOG_OUTPUTTOFILE); if (fOutput!=m_fOutputToFile) { CBlockLock Lock(&m_Lock); if (fOutput && m_LogList.size()>0) { TCHAR szFileName[MAX_PATH]; GetDefaultLogFileName(szFileName); SaveToFile(szFileName,true); } m_fOutputToFile=fOutput; m_fChanged=true; } } return TRUE; } break; } return FALSE; }